diff --git a/Code/License.ts b/Code/License.ts index 85af0da7..59387292 100644 --- a/Code/License.ts +++ b/Code/License.ts @@ -1,4 +1,4 @@ /** - * @license :JsStore.js - v1.3.1 - 30/11/2017 + * @license :JsStore.js - v1.3.2 - 15/12/2017 * https://github.com/ujjwalguptaofficial/JsStore * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ \ No newline at end of file diff --git a/Code/output/jsstore.js b/Code/output/jsstore.js index 6a3383e0..fd873940 100644 --- a/Code/output/jsstore.js +++ b/Code/output/jsstore.js @@ -9,7 +9,7 @@ var __extends = (this && this.__extends) || (function () { }; })(); /** - * @license :JsStore.js - v1.3.1 - 30/11/2017 + * @license :JsStore.js - v1.3.2 - 15/12/2017 * https://github.com/ujjwalguptaofficial/JsStore * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ var KeyStore; diff --git a/Code/output/jsstore.js.map b/Code/output/jsstore.js.map index d5d15440..4bd90ca2 100644 --- a/Code/output/jsstore.js.map +++ b/Code/output/jsstore.js.map @@ -1 +1 @@ -{"version":3,"file":"jsstore.js","sourceRoot":"","sources":["../License.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../JsStore/enums.ts","../JsStore/interfaces.ts","../JsStore/CommonLogic.ts","../JsStore/UtilsLogic.ts","../JsStore/HelperLogic.ts","../JsStore/Model/Column.ts","../JsStore/Model/Table.ts","../JsStore/Model/DataBase.ts","../JsStore/Business/BaseHelperLogic.ts","../JsStore/Business/BaseLogic.ts","../JsStore/Business/CreateDbLogic.ts","../JsStore/Business/DropDbLogic.ts","../JsStore/Business/InsertHelperLogic.ts","../JsStore/Business/InsertLogic.ts","../JsStore/Business/BulkInsertLogic.ts","../JsStore/Business/OpenDbLogic.ts","../JsStore/Business/ClearLogic.ts","../JsStore/Business/MainLogic.ts","../JsStore/Business/Select/BaseSelectLogic.ts","../JsStore/Business/Select/NotWhereLogic.ts","../JsStore/Business/Select/InLogic.ts","../JsStore/Business/Select/LikeLogic.ts","../JsStore/Business/Select/WhereLogic.ts","../JsStore/Business/Select/JoinLogic.ts","../JsStore/Business/Select/GroupByHelperLogic.ts","../JsStore/Business/Select/HelperLogic.ts","../JsStore/Business/Select/InstanceLogic.ts","../JsStore/Business/Count/BaseCountLogic.ts","../JsStore/Business/Count/NotWhereLogic.ts","../JsStore/Business/Count/InLogic.ts","../JsStore/Business/Count/LikeLogic.ts","../JsStore/Business/Count/WhereLogic.ts","../JsStore/Business/Count/InstanceLogic.ts","../JsStore/Business/Update/BaseUpdateLogic.ts","../JsStore/Business/Update/NotWhereLogic.ts","../JsStore/Business/Update/InLogic.ts","../JsStore/Business/Update/LikeLogic.ts","../JsStore/Business/Update/WhereLogic.ts","../JsStore/Business/Update/InstanceLogic.ts","../JsStore/Business/Delete/BaseDeleteLogic.ts","../JsStore/Business/Delete/NotWhereLogic.ts","../JsStore/Business/Delete/InLogic.ts","../JsStore/Business/Delete/LikeLogic.ts","../JsStore/Business/Delete/WhereLogic.ts","../JsStore/Business/Delete/InstanceLogic.ts","../JsStore/CodeExecutionHelper.ts","../JsStore/JsStoreInstance.ts","../JsStore/DirectCode.ts"],"names":[],"mappings":"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","sourcesContent":["/** \r\n * @license :JsStore.js - v1.3.1 - 30/11/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n\r\n export enum WhereQryOption {\r\n In = \"In\",\r\n Like = \"Like\",\r\n Or = \"Or\"\r\n }\r\n\r\n export enum DataType {\r\n String = \"string\",\r\n Object = \"object\",\r\n Array = \"array\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder,\r\n GroupBy: any,\r\n Aggregate: {\r\n Max: any,\r\n Min: any,\r\n Count: any,\r\n Sum: any,\r\n Avg: any\r\n },\r\n IgnoreCase: boolean,\r\n Distinct: boolean\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n IgnoreCase: boolean,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipDataCheck\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n\r\n export interface IAggregate {\r\n Max: Array,\r\n Min: Array,\r\n Sum: Array,\r\n Count: Array,\r\n Avg: Array\r\n }\r\n\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n\r\n export var log = function (msg) {\r\n if (EnableLog) {\r\n console.log(msg);\r\n }\r\n }\r\n\r\n export var logError = function (msg) {\r\n if (EnableLog) {\r\n console.error(msg);\r\n }\r\n }\r\n}","module JsStore {\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function = null, errCallBack: Function = null) {\r\n var UsePromise = callback ? false : true;\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n resolve(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n resolve(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n })\r\n }\r\n else {\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion.call(this, dbInfo, function (dbVersion) {\r\n callback.call(this, Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion.call(this, dbInfo.DbName, function (dbVersion) {\r\n callback.call(this, dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n reject(Error);\r\n });\r\n }\r\n else if (errCallBack) {\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback.call(That, Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array = [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BaseHelper {\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n\r\n protected sortNumberInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a - b;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortNumberInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b - a;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b.toLowerCase().localeCompare(a.toLowerCase());\r\n });\r\n return values;\r\n };\r\n\r\n private getCombination(word: string) {\r\n var Results = [],\r\n doAndPushCombination = function (word: string, chars, index: number) {\r\n if (index == word.length) {\r\n Results.push(chars.join(\"\"));\r\n } else {\r\n var ch = word.charAt(index);\r\n chars[index] = ch.toLowerCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n chars[index] = ch.toUpperCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n }\r\n };\r\n doAndPushCombination(word, [], 0);\r\n return Results;\r\n }\r\n\r\n protected getAllCombinationOfWord(word, isArray) {\r\n if (isArray) {\r\n var Results = [];\r\n for (var i = 0, length = word.length; i < length; i++) {\r\n Results = Results.concat(this.getCombination(word[i]))\r\n }\r\n return Results;\r\n }\r\n else {\r\n return this.getCombination(word);\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base extends BaseHelper {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n logError(Error);\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.Query.IgnoreCase === true) {\r\n this.Query.Where = this.makeQryInCaseSensitive(this.Query.Where);\r\n }\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In':\r\n this.executeInLogic(Column, Value['In']);\r\n break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n case 'Aggregate': break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected makeQryInCaseSensitive = function (qry) {\r\n var Results = [],\r\n ColumnValue,\r\n KeyValue;\r\n for (var column in qry) {\r\n ColumnValue = qry[column];\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n KeyValue = ColumnValue[key]\r\n switch (key) {\r\n case WhereQryOption.In:\r\n Results = Results.concat(this.getAllCombinationOfWord(KeyValue, true));\r\n break;\r\n case WhereQryOption.Like:\r\n break;\r\n default:\r\n Results = Results.concat(this.getAllCombinationOfWord(KeyValue));\r\n }\r\n }\r\n qry[column]['In'] = Results;\r\n }\r\n else {\r\n Results = Results.concat(this.getAllCombinationOfWord(ColumnValue));\r\n qry[column] = {\r\n In: Results\r\n }\r\n }\r\n\r\n }\r\n\r\n return qry;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n DbConnection.close();\r\n setTimeout(function () {\r\n That.deleteDb(name, onSuccess, onError);\r\n }, 100);\r\n }\r\n\r\n deleteDb = function (name: string, onSuccess: Function, onError: Function) {\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"database is blocked, cant be deleted right now.\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n onSuccess();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class InsertHelper extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n protected checkModifyInsertValues = function (table, values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n Value,\r\n TableName = table.Name,\r\n checkDatas = function () {\r\n Value = values[ValueIndex++];\r\n checkInternal();\r\n },\r\n checkInternal = function () {\r\n if (Value) {\r\n checkAndModifyValue();\r\n }\r\n else {\r\n That.insertData(values);\r\n }\r\n },\r\n checkAndModifyValue = function () {\r\n var Index = 0,\r\n checkAndModifyColumn = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(Value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof Value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n Value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && Value[column.Name] == null) { //check Default Schema\r\n Value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n }\r\n else {\r\n checkDatas();\r\n }\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n }\r\n checkDatas();\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends InsertHelper {\r\n private insertData = function (values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable: Function;\r\n if (IsReturn) {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n That.ValuesAffected.push(value);\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n ++That.RowAffected;\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n }\r\n }\r\n }\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n var ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var Table = this.getTable(query.Into);\r\n if (Table) {\r\n if (this.Query.SkipDataCheck) {\r\n this.insertData(this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n else {\r\n this.checkModifyInsertValues(Table, this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BulkInsert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private bulkinsertData = function () {\r\n var That = this;\r\n this.Transaction = DbConnection.transaction([this.Query.Into], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(this.Query.Into);\r\n this.Transaction.oncomplete = function (e) {\r\n That.OnSuccess();\r\n }\r\n this.Query.Values.forEach(function (value) {\r\n That.ObjectStore.add(value);\r\n });\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.bulkinsertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n log('checking connection and executing request:' + request.Name);\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.executeLogic(request);\r\n break;\r\n case 'change_log_status':\r\n this.changeLogStatus(request);\r\n default:\r\n switch (Status.ConStatus) {\r\n case ConnectionStatus.Connected: {\r\n this.executeLogic(request);\r\n }; break;\r\n case ConnectionStatus.Closed: {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }; break;\r\n }\r\n }\r\n }\r\n\r\n private changeLogStatus = function (request) {\r\n if (request.Query['logging'] === true) {\r\n EnableLog = true;\r\n }\r\n else {\r\n EnableLog = false;\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'bulk_insert': this.bulkInsert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'export_json': this.exportJson(request.Query, OnSuccess, OnError);\r\n break;\r\n default: console.error('The Api:-' + request.Name + 'does not support');\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public bulkInsert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new BulkInsert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n\r\n public exportJson = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n this.select(query, function (results) {\r\n var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], {\r\n type: \"text/json\"\r\n }));\r\n onSuccess(Url);\r\n }, function (err) {\r\n onError(err);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class In extends NotWhere {\r\n private executeSkipAndLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n skipOrPush(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkipForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n skipOrPush((Cursor.value));\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeSimpleForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n protected executeInLogic = function (column, values) {\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimitForIn(column, values);\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkipForIn(column, values);\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimitForIn(column, values);\r\n }\r\n else {\r\n this.executeSimpleForIn(column, values);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class GroupByHelper extends Where {\r\n constructor() {\r\n super();\r\n }\r\n\r\n private executeAggregateGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = undefined;\r\n //assign aggregate and free aggregate memory\r\n var AggregateQry = this.Query.Aggregate;\r\n this.Query.Aggregate = undefined;\r\n var Index, ObjKey, Value, AggrColumn;\r\n var calculateAggregate = function () {\r\n for (var prop in AggregateQry) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Max(\" + AggrColumn + \")\"] : 0;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n //compare between old value and new value\r\n return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Min(\" + AggrColumn + \")\"] : Infinity;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity;\r\n //compare between old value and new value\r\n return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old sum value\r\n var Sum = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = Sum;\r\n //get old count value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = Value;\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n getAvg();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (typeof GrpQry == 'string') {\r\n for (Index in Datas) {\r\n ObjKey = Datas[Index][GrpQry];\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n }\r\n else {\r\n for (Index in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[Index][GrpQry[column]];\r\n }\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (var i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n //Checking for avg and if exist then fill the datas;\r\n if (AggregateQry.Avg) {\r\n if (typeof AggregateQry.Avg == 'string') {\r\n for (Index in Datas) {\r\n var Sum = Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"],\r\n Count = Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n Datas[Index][\"Avg(\" + AggregateQry.Avg + \")\"] = Sum / Count;\r\n if (AggregateQry.Count !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n }\r\n if (AggregateQry.Sum !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"];\r\n }\r\n }\r\n }\r\n else {\r\n var IsCountTypeString = typeof AggregateQry.Count,\r\n IsSumTypeString = typeof AggregateQry.Count;\r\n for (Index in Datas) {\r\n for (var column in AggregateQry.Avg) {\r\n var AvgColumn = AggregateQry.Avg[column],\r\n Sum = Datas[Index][\"Sum(\" + AvgColumn + \")\"],\r\n Count = Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n Datas[Index][\"Avg(\" + AvgColumn + \")\"] = Sum / Count;\r\n\r\n if (IsCountTypeString) {\r\n if (AggregateQry.Count !== AvgColumn) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Count.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n\r\n if (IsSumTypeString) {\r\n if (AggregateQry.Sum !== AvgColumn) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.Results = Datas;\r\n };\r\n\r\n protected processGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = this.Query.GroupBy = undefined;\r\n if (typeof GrpQry == 'string') {\r\n for (var i in Datas) {\r\n LookUpObj[Datas[i][GrpQry]] = Datas[i];\r\n }\r\n }\r\n else {\r\n var ObjKey;\r\n for (var i in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[i][GrpQry[column]];\r\n }\r\n LookUpObj[ObjKey] = Datas[i];\r\n }\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Helper extends GroupByHelper {\r\n processOrderBy = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private processAggregateQry = function () {\r\n var Datas = this.Results,\r\n Results = {},\r\n Key;\r\n //free results memory\r\n this.Results = undefined;\r\n for (var prop in this.Query.Aggregate) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key] ? 1 : 0;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result = Result > Datas[i][Key] ? Result : Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n var Result = Infinity, Value = Infinity;\r\n for (var i in Datas) {\r\n Value = Datas[i][Key] ? Datas[i][Key] : Infinity;\r\n Result = Result < Value ? Result : Value;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result / Datas.length;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n //add results to the first index of result\r\n for (var prop in Results) {\r\n Datas[0][prop] = Results[prop];\r\n }\r\n this.Results = Datas;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Helper {\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.processOrderBy();\r\n if (this.Query.Distinct) {\r\n var GroupBy = [];\r\n var Result = this.Results[0];\r\n for (var key in Result) {\r\n GroupBy.push(key);\r\n }\r\n var PrimaryKey = this.getPrimaryKey(this.Query.From),\r\n Index = GroupBy.indexOf(PrimaryKey);\r\n GroupBy.splice(Index, 1);\r\n this.Query.GroupBy = GroupBy.length > 0 ? GroupBy : null;\r\n }\r\n if (this.Query.GroupBy) {\r\n if (this.Query.Aggregate) {\r\n this.executeAggregateGroupBy();\r\n }\r\n else {\r\n this.processGroupBy();\r\n }\r\n }\r\n else if (this.Query.Aggregate) {\r\n this.processAggregateQry();\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.count(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n That.ResultCount += (e).target.result;\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (That.CheckFlag) {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n protected onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this,\r\n Cursor: IDBCursorWithValue;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected pushApi = function (request: IWebWorkerRequest, usePromise: boolean) {\r\n if (usePromise === true) {\r\n var That = this;\r\n return new Promise(function (resolve, reject) {\r\n request.OnSuccess = function (result) {\r\n resolve(result);\r\n };\r\n request.OnError = function (error) {\r\n reject(error);\r\n };\r\n That.prcoessExecutionOfCode(request);\r\n });\r\n }\r\n else {\r\n this.prcoessExecutionOfCode(request);\r\n return this;\r\n }\r\n }\r\n\r\n private prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.RequestQueue.splice(0, 0, request);\r\n if (WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n };\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n break;\r\n default: this.RequestQueue.push(request);\r\n }\r\n }\r\n else {\r\n this.RequestQueue.push(request);\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n log(\"request pushed: \" + request.Name);\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n log(\"request executing : \" + FirstRequest.Name);\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n log(\"request finished : \" + FinishedRequest.Name);\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n protected createWorker = function () {\r\n var That: CodeExecutionHelper = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n That.executeCodeUsingWorker({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n That.executeCode();\r\n }\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\ndeclare var Promise: any;\r\n\r\nmodule JsStore {\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n WorkerInstance.terminate();\r\n }\r\n else if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n KeyStore.init();\r\n }\r\n this.createWorker();\r\n if (dbName) {\r\n this.openDb(dbName);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * open database\r\n * \r\n * @param {string} dbName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n openDb = function (dbName: string, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'open_db',\r\n Query: dbName,\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n }, false);\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {Model.IDataBase} dataBase \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n createDb = function (dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n }, false);\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb = function (onSuccess: Function, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select = function (query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count = function (query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update = function (query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete = function (query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear = function (tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * insert bulk amount of data\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n bulkInsert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n var UsePromise = onSuccess ? false : true;\r\n query.OnSuccess = query.OnError = null;\r\n return this.pushApi({\r\n Name: 'bulk_insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * export the result in json file\r\n * \r\n * @param {ISelect} qry \r\n * @memberof Instance\r\n */\r\n exportJson = function (query: ISelect) {\r\n var OnSuccess = function (url) {\r\n var Link = document.createElement(\"a\");\r\n Link.href = url;\r\n Link.download = query.From + \".json\";\r\n Link.click();\r\n if (OnSuccessCallBack) {\r\n OnSuccessCallBack();\r\n }\r\n },\r\n OnError = query['OnError'],\r\n OnSuccessCallBack = query['OnSuccess'];\r\n query['OnSuccess'] = query['OnError'] = undefined;\r\n var UsePromise = OnSuccessCallBack ? false : true;\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise).then(function (url) {\r\n OnSuccess(url);\r\n resolve();\r\n }).catch(function (err) {\r\n reject(err);\r\n });\r\n });\r\n }\r\n else {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","if (self && !self.alert) {\r\n self.onmessage = function (e) {\r\n JsStore.log(\"Request executing from WebWorker, request name: \" + e.data.Name);\r\n var Request = e.data,\r\n BusinessMain = new JsStore.Business.Main();\r\n BusinessMain.checkConnectionAndExecuteLogic(Request);\r\n };\r\n JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered;\r\n KeyStore.init();\r\n}\r\n\r\n"]} \ No newline at end of file +{"version":3,"file":"jsstore.js","sourceRoot":"","sources":["../License.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../JsStore/enums.ts","../JsStore/interfaces.ts","../JsStore/CommonLogic.ts","../JsStore/UtilsLogic.ts","../JsStore/HelperLogic.ts","../JsStore/Model/Column.ts","../JsStore/Model/Table.ts","../JsStore/Model/DataBase.ts","../JsStore/Business/BaseHelperLogic.ts","../JsStore/Business/BaseLogic.ts","../JsStore/Business/CreateDbLogic.ts","../JsStore/Business/DropDbLogic.ts","../JsStore/Business/InsertHelperLogic.ts","../JsStore/Business/InsertLogic.ts","../JsStore/Business/BulkInsertLogic.ts","../JsStore/Business/OpenDbLogic.ts","../JsStore/Business/ClearLogic.ts","../JsStore/Business/MainLogic.ts","../JsStore/Business/Select/BaseSelectLogic.ts","../JsStore/Business/Select/NotWhereLogic.ts","../JsStore/Business/Select/InLogic.ts","../JsStore/Business/Select/LikeLogic.ts","../JsStore/Business/Select/WhereLogic.ts","../JsStore/Business/Select/JoinLogic.ts","../JsStore/Business/Select/GroupByHelperLogic.ts","../JsStore/Business/Select/HelperLogic.ts","../JsStore/Business/Select/InstanceLogic.ts","../JsStore/Business/Count/BaseCountLogic.ts","../JsStore/Business/Count/NotWhereLogic.ts","../JsStore/Business/Count/InLogic.ts","../JsStore/Business/Count/LikeLogic.ts","../JsStore/Business/Count/WhereLogic.ts","../JsStore/Business/Count/InstanceLogic.ts","../JsStore/Business/Update/BaseUpdateLogic.ts","../JsStore/Business/Update/NotWhereLogic.ts","../JsStore/Business/Update/InLogic.ts","../JsStore/Business/Update/LikeLogic.ts","../JsStore/Business/Update/WhereLogic.ts","../JsStore/Business/Update/InstanceLogic.ts","../JsStore/Business/Delete/BaseDeleteLogic.ts","../JsStore/Business/Delete/NotWhereLogic.ts","../JsStore/Business/Delete/InLogic.ts","../JsStore/Business/Delete/LikeLogic.ts","../JsStore/Business/Delete/WhereLogic.ts","../JsStore/Business/Delete/InstanceLogic.ts","../JsStore/CodeExecutionHelper.ts","../JsStore/JsStoreInstance.ts","../JsStore/DirectCode.ts"],"names":[],"mappings":"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","sourcesContent":["/** \r\n * @license :JsStore.js - v1.3.2 - 15/12/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n\r\n export enum WhereQryOption {\r\n In = \"In\",\r\n Like = \"Like\",\r\n Or = \"Or\"\r\n }\r\n\r\n export enum DataType {\r\n String = \"string\",\r\n Object = \"object\",\r\n Array = \"array\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder,\r\n GroupBy: any,\r\n Aggregate: {\r\n Max: any,\r\n Min: any,\r\n Count: any,\r\n Sum: any,\r\n Avg: any\r\n },\r\n IgnoreCase: boolean,\r\n Distinct: boolean\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n IgnoreCase: boolean,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipDataCheck\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n\r\n export interface IAggregate {\r\n Max: Array,\r\n Min: Array,\r\n Sum: Array,\r\n Count: Array,\r\n Avg: Array\r\n }\r\n\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n\r\n export var log = function (msg) {\r\n if (EnableLog) {\r\n console.log(msg);\r\n }\r\n }\r\n\r\n export var logError = function (msg) {\r\n if (EnableLog) {\r\n console.error(msg);\r\n }\r\n }\r\n}","module JsStore {\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function = null, errCallBack: Function = null) {\r\n var UsePromise = callback ? false : true;\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n resolve(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n resolve(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n })\r\n }\r\n else {\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion.call(this, dbInfo, function (dbVersion) {\r\n callback.call(this, Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion.call(this, dbInfo.DbName, function (dbVersion) {\r\n callback.call(this, dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n reject(Error);\r\n });\r\n }\r\n else if (errCallBack) {\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback.call(That, Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BaseHelper {\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n\r\n protected sortNumberInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a - b;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortNumberInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b - a;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b.toLowerCase().localeCompare(a.toLowerCase());\r\n });\r\n return values;\r\n };\r\n\r\n private getCombination(word: string) {\r\n var Results = [],\r\n doAndPushCombination = function (word: string, chars, index: number) {\r\n if (index == word.length) {\r\n Results.push(chars.join(\"\"));\r\n } else {\r\n var ch = word.charAt(index);\r\n chars[index] = ch.toLowerCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n chars[index] = ch.toUpperCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n }\r\n };\r\n doAndPushCombination(word, [], 0);\r\n return Results;\r\n }\r\n\r\n protected getAllCombinationOfWord(word, isArray) {\r\n if (isArray) {\r\n var Results = [];\r\n for (var i = 0, length = word.length; i < length; i++) {\r\n Results = Results.concat(this.getCombination(word[i]))\r\n }\r\n return Results;\r\n }\r\n else {\r\n return this.getCombination(word);\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base extends BaseHelper {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n logError(Error);\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.Query.IgnoreCase === true) {\r\n this.Query.Where = this.makeQryInCaseSensitive(this.Query.Where);\r\n }\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In':\r\n this.executeInLogic(Column, Value['In']);\r\n break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n case 'Aggregate': break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected makeQryInCaseSensitive = function (qry) {\r\n var Results = [],\r\n ColumnValue,\r\n KeyValue;\r\n for (var column in qry) {\r\n ColumnValue = qry[column];\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n KeyValue = ColumnValue[key]\r\n switch (key) {\r\n case WhereQryOption.In:\r\n Results = Results.concat(this.getAllCombinationOfWord(KeyValue, true));\r\n break;\r\n case WhereQryOption.Like:\r\n break;\r\n default:\r\n Results = Results.concat(this.getAllCombinationOfWord(KeyValue));\r\n }\r\n }\r\n qry[column]['In'] = Results;\r\n }\r\n else {\r\n Results = Results.concat(this.getAllCombinationOfWord(ColumnValue));\r\n qry[column] = {\r\n In: Results\r\n }\r\n }\r\n\r\n }\r\n\r\n return qry;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n DbConnection.close();\r\n setTimeout(function () {\r\n That.deleteDb(name, onSuccess, onError);\r\n }, 100);\r\n }\r\n\r\n deleteDb = function (name: string, onSuccess: Function, onError: Function) {\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"database is blocked, cant be deleted right now.\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n onSuccess();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class InsertHelper extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n protected checkModifyInsertValues = function (table, values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n Value,\r\n TableName = table.Name,\r\n checkDatas = function () {\r\n Value = values[ValueIndex++];\r\n checkInternal();\r\n },\r\n checkInternal = function () {\r\n if (Value) {\r\n checkAndModifyValue();\r\n }\r\n else {\r\n That.insertData(values);\r\n }\r\n },\r\n checkAndModifyValue = function () {\r\n var Index = 0,\r\n checkAndModifyColumn = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(Value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof Value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n Value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && Value[column.Name] == null) { //check Default Schema\r\n Value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n }\r\n else {\r\n checkDatas();\r\n }\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n }\r\n checkDatas();\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends InsertHelper {\r\n private insertData = function (values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable: Function;\r\n if (IsReturn) {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n That.ValuesAffected.push(value);\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n ++That.RowAffected;\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n }\r\n }\r\n }\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n var ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var Table = this.getTable(query.Into);\r\n if (Table) {\r\n if (this.Query.SkipDataCheck) {\r\n this.insertData(this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n else {\r\n this.checkModifyInsertValues(Table, this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BulkInsert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private bulkinsertData = function () {\r\n var That = this;\r\n this.Transaction = DbConnection.transaction([this.Query.Into], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(this.Query.Into);\r\n this.Transaction.oncomplete = function (e) {\r\n That.OnSuccess();\r\n }\r\n this.Query.Values.forEach(function (value) {\r\n That.ObjectStore.add(value);\r\n });\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.bulkinsertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n log('checking connection and executing request:' + request.Name);\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.executeLogic(request);\r\n break;\r\n case 'change_log_status':\r\n this.changeLogStatus(request);\r\n default:\r\n switch (Status.ConStatus) {\r\n case ConnectionStatus.Connected: {\r\n this.executeLogic(request);\r\n }; break;\r\n case ConnectionStatus.Closed: {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }; break;\r\n }\r\n }\r\n }\r\n\r\n private changeLogStatus = function (request) {\r\n if (request.Query['logging'] === true) {\r\n EnableLog = true;\r\n }\r\n else {\r\n EnableLog = false;\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'bulk_insert': this.bulkInsert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'export_json': this.exportJson(request.Query, OnSuccess, OnError);\r\n break;\r\n default: console.error('The Api:-' + request.Name + 'does not support');\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public bulkInsert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new BulkInsert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n\r\n public exportJson = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n this.select(query, function (results) {\r\n var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], {\r\n type: \"text/json\"\r\n }));\r\n onSuccess(Url);\r\n }, function (err) {\r\n onError(err);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class In extends NotWhere {\r\n private executeSkipAndLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n skipOrPush(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkipForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n skipOrPush((Cursor.value));\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeSimpleForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n protected executeInLogic = function (column, values) {\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimitForIn(column, values);\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkipForIn(column, values);\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimitForIn(column, values);\r\n }\r\n else {\r\n this.executeSimpleForIn(column, values);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class GroupByHelper extends Where {\r\n constructor() {\r\n super();\r\n }\r\n\r\n private executeAggregateGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = undefined;\r\n //assign aggregate and free aggregate memory\r\n var AggregateQry = this.Query.Aggregate;\r\n this.Query.Aggregate = undefined;\r\n var Index, ObjKey, Value, AggrColumn;\r\n var calculateAggregate = function () {\r\n for (var prop in AggregateQry) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Max(\" + AggrColumn + \")\"] : 0;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n //compare between old value and new value\r\n return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Min(\" + AggrColumn + \")\"] : Infinity;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity;\r\n //compare between old value and new value\r\n return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old sum value\r\n var Sum = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = Sum;\r\n //get old count value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = Value;\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n getAvg();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (typeof GrpQry == 'string') {\r\n for (Index in Datas) {\r\n ObjKey = Datas[Index][GrpQry];\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n }\r\n else {\r\n for (Index in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[Index][GrpQry[column]];\r\n }\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (var i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n //Checking for avg and if exist then fill the datas;\r\n if (AggregateQry.Avg) {\r\n if (typeof AggregateQry.Avg == 'string') {\r\n for (Index in Datas) {\r\n var Sum = Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"],\r\n Count = Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n Datas[Index][\"Avg(\" + AggregateQry.Avg + \")\"] = Sum / Count;\r\n if (AggregateQry.Count !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n }\r\n if (AggregateQry.Sum !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"];\r\n }\r\n }\r\n }\r\n else {\r\n var IsCountTypeString = typeof AggregateQry.Count,\r\n IsSumTypeString = typeof AggregateQry.Count;\r\n for (Index in Datas) {\r\n for (var column in AggregateQry.Avg) {\r\n var AvgColumn = AggregateQry.Avg[column],\r\n Sum = Datas[Index][\"Sum(\" + AvgColumn + \")\"],\r\n Count = Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n Datas[Index][\"Avg(\" + AvgColumn + \")\"] = Sum / Count;\r\n\r\n if (IsCountTypeString) {\r\n if (AggregateQry.Count !== AvgColumn) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Count.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n\r\n if (IsSumTypeString) {\r\n if (AggregateQry.Sum !== AvgColumn) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.Results = Datas;\r\n };\r\n\r\n protected processGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = this.Query.GroupBy = undefined;\r\n if (typeof GrpQry == 'string') {\r\n for (var i in Datas) {\r\n LookUpObj[Datas[i][GrpQry]] = Datas[i];\r\n }\r\n }\r\n else {\r\n var ObjKey;\r\n for (var i in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[i][GrpQry[column]];\r\n }\r\n LookUpObj[ObjKey] = Datas[i];\r\n }\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Helper extends GroupByHelper {\r\n processOrderBy = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private processAggregateQry = function () {\r\n var Datas = this.Results,\r\n Results = {},\r\n Key;\r\n //free results memory\r\n this.Results = undefined;\r\n for (var prop in this.Query.Aggregate) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key] ? 1 : 0;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result = Result > Datas[i][Key] ? Result : Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n var Result = Infinity, Value = Infinity;\r\n for (var i in Datas) {\r\n Value = Datas[i][Key] ? Datas[i][Key] : Infinity;\r\n Result = Result < Value ? Result : Value;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result / Datas.length;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n //add results to the first index of result\r\n for (var prop in Results) {\r\n Datas[0][prop] = Results[prop];\r\n }\r\n this.Results = Datas;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Helper {\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.processOrderBy();\r\n if (this.Query.Distinct) {\r\n var GroupBy = [];\r\n var Result = this.Results[0];\r\n for (var key in Result) {\r\n GroupBy.push(key);\r\n }\r\n var PrimaryKey = this.getPrimaryKey(this.Query.From),\r\n Index = GroupBy.indexOf(PrimaryKey);\r\n GroupBy.splice(Index, 1);\r\n this.Query.GroupBy = GroupBy.length > 0 ? GroupBy : null;\r\n }\r\n if (this.Query.GroupBy) {\r\n if (this.Query.Aggregate) {\r\n this.executeAggregateGroupBy();\r\n }\r\n else {\r\n this.processGroupBy();\r\n }\r\n }\r\n else if (this.Query.Aggregate) {\r\n this.processAggregateQry();\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.count(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n That.ResultCount += (e).target.result;\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (That.CheckFlag) {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n protected onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this,\r\n Cursor: IDBCursorWithValue;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected pushApi = function (request: IWebWorkerRequest, usePromise: boolean) {\r\n if (usePromise === true) {\r\n var That = this;\r\n return new Promise(function (resolve, reject) {\r\n request.OnSuccess = function (result) {\r\n resolve(result);\r\n };\r\n request.OnError = function (error) {\r\n reject(error);\r\n };\r\n That.prcoessExecutionOfCode(request);\r\n });\r\n }\r\n else {\r\n this.prcoessExecutionOfCode(request);\r\n return this;\r\n }\r\n }\r\n\r\n private prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.RequestQueue.splice(0, 0, request);\r\n if (WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n };\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n break;\r\n default: this.RequestQueue.push(request);\r\n }\r\n }\r\n else {\r\n this.RequestQueue.push(request);\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n log(\"request pushed: \" + request.Name);\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n log(\"request executing : \" + FirstRequest.Name);\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n log(\"request finished : \" + FinishedRequest.Name);\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n protected createWorker = function () {\r\n var That: CodeExecutionHelper = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n That.executeCodeUsingWorker({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n That.executeCode();\r\n }\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\ndeclare var Promise: any;\r\n\r\nmodule JsStore {\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n WorkerInstance.terminate();\r\n }\r\n else if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n KeyStore.init();\r\n }\r\n this.createWorker();\r\n if (dbName) {\r\n this.openDb(dbName);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * open database\r\n * \r\n * @param {string} dbName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n openDb = function (dbName: string, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'open_db',\r\n Query: dbName,\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n }, false);\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {Model.IDataBase} dataBase \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n createDb = function (dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n }, false);\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb = function (onSuccess: Function, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select = function (query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count = function (query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update = function (query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete = function (query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear = function (tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * insert bulk amount of data\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n bulkInsert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n var UsePromise = onSuccess ? false : true;\r\n query.OnSuccess = query.OnError = null;\r\n return this.pushApi({\r\n Name: 'bulk_insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * export the result in json file\r\n * \r\n * @param {ISelect} qry \r\n * @memberof Instance\r\n */\r\n exportJson = function (query: ISelect) {\r\n var OnSuccess = function (url) {\r\n var Link = document.createElement(\"a\");\r\n Link.href = url;\r\n Link.download = query.From + \".json\";\r\n Link.click();\r\n if (OnSuccessCallBack) {\r\n OnSuccessCallBack();\r\n }\r\n },\r\n OnError = query['OnError'],\r\n OnSuccessCallBack = query['OnSuccess'];\r\n query['OnSuccess'] = query['OnError'] = undefined;\r\n var UsePromise = OnSuccessCallBack ? false : true;\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise).then(function (url) {\r\n OnSuccess(url);\r\n resolve();\r\n }).catch(function (err) {\r\n reject(err);\r\n });\r\n });\r\n }\r\n else {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","if (self && !self.alert) {\r\n self.onmessage = function (e) {\r\n JsStore.log(\"Request executing from WebWorker, request name: \" + e.data.Name);\r\n var Request = e.data,\r\n BusinessMain = new JsStore.Business.Main();\r\n BusinessMain.checkConnectionAndExecuteLogic(Request);\r\n };\r\n JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered;\r\n KeyStore.init();\r\n}\r\n\r\n"]} \ No newline at end of file diff --git a/Code/output/jsstore.min.js b/Code/output/jsstore.min.js index 09683cbb..2f203f32 100644 --- a/Code/output/jsstore.min.js +++ b/Code/output/jsstore.min.js @@ -1 +1,5 @@ +/** + * @license :JsStore.js - v1.3.2 - 15/12/2017 + * https://github.com/ujjwalguptaofficial/JsStore + * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:self.postMessage("message:WorkerFailed")},e}();e.Utils=t}(KeyStore||(KeyStore={}));!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){++this.ErrorCount,1==this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this,t=function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}};for(var n in this.Query.Where){t(n,this.Query.Where[n]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this,t=function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}};for(var n in this.Query.Where){e.ErrorOccured||t(n,e.Query.Where[n]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName,function(){r.checkConnectionAndExecuteLogic(n)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={}));!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.In="In",e.Like="Like",e.Or="Or"}(e.WhereQryOption||(e.WhereQryOption={}));!function(e){e.String="string",e.Object="object",e.Array="array"}(e.DataType||(e.DataType={}))}(JsStore||(JsStore={}));!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.TempResults=[],e.throwError=function(e){throw e},e.getObjectFirstKey=function(e){for(var t in e)return t;return null},e.log=function(t){e.EnableLog},e.logError=function(t){e.EnableLog}}(JsStore||(JsStore={}));!function(e){var t=function(){function t(){}return t.getError=function(t,n){var r={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:r.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:r.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:r.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:r.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:r.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:r.Message="No value supplied";break;case e.ErrorType.InvalidOp:r.Message="Invalid Op Value '"+n.Op+"'";break;case e.ErrorType.ColumnNotExist:r.Message="Column '"+n.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:r.Message="Null value is not allowed for column '"+n.ColumnName+"'";break;case e.ErrorType.BadDataType:r.Message="Supplied value for column '"+n.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:r.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:r.Message="Table '"+n.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:r.Message="Database '"+n.DbName+"' does not exist"}return r},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));!function(e){e.isDbExist=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o=!n;if(e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){if(o)return new Promise(function(n,r){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})});"string"==typeof t?e.getDbVersion.call(this,t,function(e){n.call(this,Boolean(e))}):e.getDbVersion.call(this,t.DbName,function(e){n.call(this,t.Table.Version<=e)})}else{var s={Name:e.Status.LastError,Message:""};switch(s.Name){case e.ErrorType.IndexedDbBlocked:s.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:s.Message="IndexedDB is not supported"}if(o)return new Promise(function(e,t){t(s)});r&&r(s)}},e.getDbVersion=function(e,t){var n=this;KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t.call(n,Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})},e.disableLog=function(){e.EnableLog=!1,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})}}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(t,n){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+n),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:ethis.Version?e.DbVersion:this.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+this.Name+"_Version",e.DbVersion),this.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));!function(e){!function(e){var t=function(){function t(){this.getTable=function(t){var n;return e.ActiveDataBase.Tables.every(function(e){return e.Name!=t||(n=e,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n},this.getObjectSecondKey=function(e){var t=!1;for(var n in e){if(t)return n;t=!0}},this.getPrimaryKey=function(e){var t=this.getTable(e).PrimaryKey;return t||this.getKeyPath()},this.getKeyPath=function(t){return e.DbConnection.transaction([t],"readonly").objectStore(t).keyPath},this.sortNumberInAsc=function(e){return e.sort(function(e,t){return e-t}),e},this.sortNumberInDesc=function(e){return e.sort(function(e,t){return t-e}),e},this.sortAlphabetInAsc=function(e){return e.sort(function(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}),e},this.sortAlphabetInDesc=function(e){return e.sort(function(e,t){return t.toLowerCase().localeCompare(e.toLowerCase())}),e}}return t.prototype.getCombination=function(e){var t=[],n=function(e,r,o){if(o==e.length)t.push(r.join(""));else{var s=e.charAt(o);r[o]=s.toLowerCase(),n(e,r,o+1),r[o]=s.toUpperCase(),n(e,r,o+1)}};return n(e,[],0),t},t.prototype.getAllCombinationOfWord=function(e,t){if(t){for(var n=[],r=0,o=e.length;r1||Object.keys(this.Query.Where).length>1);var r=e.getObjectFirstKey(n);switch(r){case"Like":var o=n.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":this.executeInLogic(t,n.In);break;case"-":case">":case"<":case">=":case"<=":this.executeWhereLogic(t,n,r);break;case"Aggregate":break;default:this.executeWhereLogic(t,n)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)},n.makeQryInCaseSensitive=function(t){var n,r,o=[];for(var s in t)if("object"==typeof(n=t[s])){for(var u in n)switch(r=n[u],u){case e.WhereQryOption.In:o=o.concat(this.getAllCombinationOfWord(r,!0));break;case e.WhereQryOption.Like:break;default:o=o.concat(this.getAllCombinationOfWord(r))}t[s].In=o}else o=o.concat(this.getAllCombinationOfWord(n)),t[s]={In:o};return t},n}return __extends(n,t),n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0,o=function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(i=o.indexOf(u.toLowerCase()))<0&&(r=!1);break;case e.Occurence.First:((i=o.indexOf(u.toLowerCase()))>0||i<0)&&(r=!1);break;default:(i=o.lastIndexOf(u.toLowerCase()))":t<=s&&(r=!1);break;case"<":t>=s&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}};for(var i in n){var c=n[i];if(!r)break;if("object"==typeof c)for(var a in c){if(!r)break;switch(a){case"In":o(i,t[i]);break;case"Like":s(i,t[i]);break;case"-":case">":case"<":case">=":case"<=":u(i,t[i],a)}}else{if(c!=t[i]){r=!1;break}}}return r},n}(t.BaseHelper);t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(n,r,o){var s=[],u=indexedDB.open(t.ActiveDataBase.Name,n);u.onerror=function(e){null!=o&&o(e.target.error)},u.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=r&&r(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},u.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),i(n,e)):e.RequireCreation&&i(n,e)})};var i=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}s.push(n.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(n,r,o){this.deleteDb=function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("database is blocked, cant be deleted right now.")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),r()}};var s=this;t.DbConnection.close(),setTimeout(function(){s.deleteDb(n,r,o)},100)}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.ValuesAffected=[],r.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},r.checkModifyInsertValues=function(n,r){var o,s=this,u=0,i=n.Name,c=function(){o=r[u++],a()},a=function(){o?l():s.insertData(r)},l=function(){var r=0,u=function(a){if(a){var l=function(t,n){s.ErrorOccured=!0,s.Error=e.Utils.getError(t,n)},h=function(){a.NotNull&&e.isNull(o[a.Name])?l(e.ErrorType.NullValue,{ColumnName:a.Name}):a.DataType&&typeof o[a.Name]!=a.DataType&&l(e.ErrorType.BadDataType,{ColumnName:a.Name}),u(n.Columns[r++])};s.ErrorOccured?s.onErrorOccured(s.Error,!0):a.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",function(e){o[a.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",e),h()}):a.Default&&null==o[a.Name]?(o[a.Name]=a.Default,h()):h()}else c()};u(n.Columns[r++])};c()},r}return __extends(r,n),r}(t.Base);t.InsertHelper=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.insertData=function(e){var n,r=this,o=0,s=this.Query.Return;n=s?function(t){if(t){var s=u.add(t);s.onerror=function(e){r.onErrorOccured(e)},s.onsuccess=function(s){r.ValuesAffected.push(t),n(e[o++])}}}:function(t){if(t){var s=u.add(t);s.onerror=function(e){r.onErrorOccured(e)},s.onsuccess=function(t){++r.RowAffected,n(e[o++])}}},r.Transaction=t.DbConnection.transaction([r.Query.Into],"readwrite");var u=r.Transaction.objectStore(r.Query.Into);r.Transaction.oncomplete=function(e){r.onTransactionCompleted()},n(e[o++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;var i=u.getTable(r.Into);if(i)u.Query.SkipDataCheck?(u.insertData(u.Query.Values),u.Query.Values=void 0):(u.checkModifyInsertValues(i,u.Query.Values),u.Query.Values=void 0);else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r}(t.InsertHelper);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.bulkinsertData=function(){var e=this;this.Transaction=t.DbConnection.transaction([this.Query.Into],"readwrite"),this.ObjectStore=this.Transaction.objectStore(this.Query.Into),this.Transaction.oncomplete=function(t){e.OnSuccess()},this.Query.Values.forEach(function(t){e.ObjectStore.add(t)})};try{u.Query=r,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(r.Into),u.Table)u.bulkinsertData();else{var i=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(i)}}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r}(t.Base);t.BulkInsert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=r&&r()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.set("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value",0)}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){switch(e.log("checking connection and executing request:"+n.Name),n.Name){case"create_db":case"open_db":this.executeLogic(n);break;case"change_log_status":this.changeLogStatus(n);default:switch(e.Status.ConStatus){case e.ConnectionStatus.Connected:this.executeLogic(n);break;case e.ConnectionStatus.Closed:var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}}},this.changeLogStatus=function(t){!0===t.Query.logging?e.EnableLog=!0:e.EnableLog=!1},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"bulk_insert":this.bulkInsert(e.Query,n,r);break;case"export_json":this.exportJson(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){Array.isArray(n.Values)?new t.Insert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.bulkInsert=function(n,r,o){Array.isArray(n.Values)?new t.BulkInsert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.exportJson=function(e,t,n){this.select(e,function(e){var n=URL.createObjectURL(new Blob([JSON.stringify(e)],{type:"text/json"}));t(n)},function(e){n(e)})},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.Sorted=!1,t.CheckFlag=!1,t.removeDuplicates=function(){var e=this.Results;this.Results=void 0;var t=this.getPrimaryKey(this.Query.From),n={};for(var r in e)n[e[r][t]]=e[r];e=[];for(r in n)e.push(n[r]);this.Results=e},t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n,r=this;if(this.Query.Order&&this.Query.Order.By)if(r.ObjectStore.indexNames.contains(this.Query.Order.By)){var o=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,n=this.ObjectStore.index(r.Query.Order.By).openCursor(null,o)}else{var s=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(s)}else n=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;n.onsuccess=function(n){(t=n.target.result)&&(e&&r.Results.length!=r.LimitRecord?(r.Results.push(t.value),t.continue()):(e=!0,t.advance(r.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;n.onsuccess=function(n){(t=n.target.result)&&(e?(r.Results.push(t.value),t.continue()):(e=!0,t.advance(r.SkipRecord)))}}():this.LimitRecord?n.onsuccess=function(e){(t=e.target.result)&&r.Results.length!=r.LimitRecord&&(r.Results.push(t.value),t.continue())}:n.onsuccess=function(e){(t=e.target.result)&&(r.Results.push(t.value),t.continue())},n.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeSkipAndLimitForIn=function(e,t){var n,r=this.SkipRecord,o=this,s=this.ObjectStore.index(e),u=function(e){0==r?o.Results.push(e):--r};if(o.CheckFlag)for(var i=0,c=t.length;i=0&&(n=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(n=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e,t=this.SkipRecord,n=this,r=function(e){0==t?n.Results.push(e):--t};n.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,n.Results.length!=n.LimitRecord&&e&&(n.filterOnOccurence(e.key)&&n.checkForWhereConditionMatch(e.value)&&r(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,n.Results.length!=n.LimitRecord&&e&&(n.filterOnOccurence(e.key)&&r(e.value),e.continue())}},n.executeSkip=function(){var e,t=this.SkipRecord,n=this,r=function(e){0==t?n.Results.push(e):--t};n.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(n.filterOnOccurence(e.key)&&n.checkForWhereConditionMatch(e.value)&&r(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(n.filterOnOccurence(e.key)&&r(e.value),e.continue())}},n.executeLimit=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(n){e=n.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.key)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(n){e=n.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.key)&&t.Results.push(e.value),e.continue())}},n.executeSimple=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(n){(e=n.target.result)&&(t.filterOnOccurence(e.key)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(n){(e=n.target.result)&&(t.filterOnOccurence(e.key)&&t.Results.push(e.value),e.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.In);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.LimitRecord?s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&s.checkForWhereConditionMatch(o.value)&&(s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&(s.Results.push(o.value),o.continue())}:s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&(s.Results.push(o.value),o.continue())}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},function(e){r.ErrorOccured=!0,r.onErrorOccured(e)})},s.executeWhereUndefinedLogicForJoin=function(t,n){var r=this,o=[],s=0,u=(n.Column,r.Results),i=u.length,c=0,a={},l=function(){c0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;tr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null))};l()},s.OnSuccess=r,s.OnError=o,s.Query=n;var u=s,i=[],c=function(e){return e.hasOwnProperty("Table1")?(e.Table2.JoinType=void 0==e.Join?"inner":e.Join.toLowerCase(),u.QueryStack.push(e.Table2),u.QueryStack.length%2==0&&(u.QueryStack[u.QueryStack.length-1].NextJoin=e.NextJoin),i.push(e.Table2.Table),c(e.Table1)):(u.QueryStack.push(e),void i.push(e.Table))};return c(n.From),s.QueryStack.reverse(),s.ErrorOccured||new e.Instance({From:s.QueryStack[0].Table,Where:s.QueryStack[0].Where},function(e){var t=u.QueryStack[0].Table;e.forEach(function(e,n){u.Results[n]={},u.Results[n][t]=e}),u.startExecutionJoinLogic()},function(e){u.onErrorOccured(e)}),s}return __extends(n,t),n.prototype.startExecutionJoinLogic=function(){var e;this.CurrentQueryStackIndex>=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=e.call(this)||this;return t.executeAggregateGroupBy=function(){var e=this.Query.GroupBy,t=this.Results,n={};this.Results=void 0;var r=this.Query.Aggregate;this.Query.Aggregate=void 0;var o,s,u,i,c=function(){for(var e in r)switch(e){case"Count":var c=function(){return u=n[s],u=u?u["Count("+i+")"]:0,u+=t[o][i]?1:0};if("string"==typeof r[e])i=r[e],t[o]["Count("+i+")"]=c();else if(Array.isArray(r[e]))for(var a in r[e])i=r[e][a],t[o]["Count("+i+")"]=c();break;case"Max":var l=function(){return u=n[s],u=u?u["Max("+i+")"]:0,t[o][i]=t[o][i]?t[o][i]:0,u>t[o][i]?u:t[o][i]};if("string"==typeof r[e])i=r[e],t[o]["Max("+i+")"]=l();else if(Array.isArray(r[e]))for(var a in r[e])i=r[e][a],t[o]["Max("+i+")"]=l();break;case"Min":var h=function(){return u=n[s],u=u?u["Min("+i+")"]:1/0,t[o][i]=t[o][i]?t[o][i]:1/0,u0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]}))}},t.processAggregateQry=function(){var e,t=this.Results,n={};this.Results=void 0;for(var r in this.Query.Aggregate)switch(r){case"Count":var o=function(){var n=0;for(var r in t)n+=t[r][e]?1:0;return n};if("string"==typeof this.Query.Aggregate[r])n["Count("+(e=this.Query.Aggregate[r])+")"]=o();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Count("+(e=this.Query.Aggregate[r][s])+")"]=o();break;case"Max":var u=function(){var n=0;for(var r in t)n=n>t[r][e]?n:t[r][e];return n};if("string"==typeof this.Query.Aggregate[r])n["Max("+(e=this.Query.Aggregate[r])+")"]=u();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Max("+(e=this.Query.Aggregate[r][s])+")"]=u();break;case"Min":var i=function(){var n=1/0,r=1/0;for(var o in t)n=n<(r=t[o][e]?t[o][e]:1/0)?n:r;return n};if("string"==typeof this.Query.Aggregate[r])n["Min("+(e=this.Query.Aggregate[r])+")"]=i();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Min("+(e=this.Query.Aggregate[r][s])+")"]=i();break;case"Sum":var c=function(){var n=0;for(var r in t)n+=t[r][e];return n};if("string"==typeof this.Query.Aggregate[r])n["Sum("+(e=this.Query.Aggregate[r])+")"]=c();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Sum("+(e=this.Query.Aggregate[r][s])+")"]=c();break;case"Avg":var a=function(){var n=0;for(var r in t)n+=t[r][e];return n/t.length};if("string"==typeof this.Query.Aggregate[r])n["Avg("+(e=this.Query.Aggregate[r])+")"]=a();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Avg("+(e=this.Query.Aggregate[r][s])+")"]=a()}for(var r in n)t[0][r]=n[r];this.Results=t},t}return __extends(t,e),t}(e.GroupByHelper);e.Helper=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){if(this.SendResultFlag){if(this.processOrderBy(),this.Query.Distinct){var e=[],t=this.Results[0];for(var n in t)e.push(n);var r=this.getPrimaryKey(this.Query.From),o=e.indexOf(r);e.splice(o,1),this.Query.GroupBy=e.length>0?e:null}this.Query.GroupBy?this.Query.Aggregate?this.executeAggregateGroupBy():this.processGroupBy():this.Query.Aggregate&&this.processAggregateQry(),this.OnSuccess(this.Results)}},u.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readonly"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.orQuerySuccess=function(){this.Results=this.OrInfo.Results,this.OrInfo.Results=void 0,this.removeDuplicates(),this.OrInfo.OnSucess(this.Results)},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess,Results:[]},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){if(this.OrInfo.Results=this.OrInfo.Results.concat(this.Results),!this.Query.Limit||this.Query.Limit>this.OrInfo.Results.length){this.Results=[];var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.orQuerySuccess()}else this.orQuerySuccess()}};var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s,u.SkipRecord=u.Query.Skip,u.LimitRecord=u.Query.Limit;try{u.Transaction=t.DbConnection.transaction([r.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.Transaction.ontimeout=i.onTransactionCompleted,u.ObjectStore=u.Transaction.objectStore(r.From),r.Where?(r.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:r.From})}return u}return __extends(r,n),r}(n.Helper);n.Instance=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var n,r=this.ObjectStore.openCursor();r.onsuccess=function(t){(n=t.target.result)&&(++e.ResultCount,n.continue())},r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var n,r,o=this,s=this.ObjectStore.index(e);if(o.CheckFlag)for(var u=0,i=t.length;u=0&&(n=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(n=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.key)&&o.checkForWhereConditionMatch(r.value)&&++o.ResultCount,r.continue())}:this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.key)&&++o.ResultCount,r.continue())}},n}return __extends(n,t),n}(t.In);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r=this;if(t=n?t[n]:t,r.CheckFlag){(u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){(s=e.target.result)&&(r.checkForWhereConditionMatch(s.value)&&++r.ResultCount,s.continue())},u.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else if(this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,n));o.onsuccess=function(){r.ResultCount=o.result},o.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else{var s,u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n));u.onsuccess=function(e){(s=e.target.result)&&(++r.ResultCount,s.continue())},u.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o;try{var i=function(){u.Transaction=e.DbConnection.transaction([n.From],"readonly"),u.ObjectStore=u.Transaction.objectStore(n.From),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};void 0!=n.Where?n.Where.Or?new e.Select.Instance(n,function(e){u.ResultCount=e.length,u.onTransactionCompleted()},s.OnError):(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e,n=this,r=this.ObjectStore.openCursor();r.onsuccess=function(r){(e=r.target.result)&&(e.update(t.updateValue(n.Query.Set,e.value)),++n.RowAffected,e.continue())},r.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeInLogic=function(t,n){var r,o,s=this,u=this.ObjectStore.index(t);if(s.CheckFlag)for(var i=0,c=n.length;i=0&&(n=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(n=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o,s=this;this.CompValue=n.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},s.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.key)&&s.checkForWhereConditionMatch(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}:this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.key)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}},r}return __extends(r,n),r}(t.In);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereLogic=function(t,n,r){var o,s,u=this;n=r?n[r]:n,s=this.ObjectStore.index(t).openCursor(this.getKeyRange(n,r)),u.CheckFlag?s.onsuccess=function(t){(o=t.target.result)&&(u.checkForWhereConditionMatch(o.value)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected),o.continue())}:s.onsuccess=function(t){(o=t.target.result)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected,o.continue())},s.onerror=function(e){u.ErrorOccured=!0,u.onErrorOccured(e)}},n}return __extends(n,t),n}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},s.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.In],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.In),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},s.executeOrLogic=function(){var e=this;new t.Select.Instance({From:this.Query.In,Where:this.Query.Where},function(t){var n=e.getPrimaryKey(e.Query.In),r=[],o={};t.forEach(function(e){r.push(e[n])}),o[n]={In:r},e.createtransactionForOrLogic({In:e.Query.In,Where:o,Set:e.Query.Set})},this.OnError)};try{if(s.OnSuccess=r,s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e;var u=s,i=function(){u.Transaction=t.DbConnection.transaction([e.In],"readwrite"),u.ObjectStore=u.Transaction.objectStore(e.In),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};e.Where?e.Where.Or?s.executeOrLogic():(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){if(t){var r=this.getTable(n),o=this;if(r){var s=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)};r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){!function(t){if(n.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:n.Name}),n.DataType){var r=typeof t;if(r!=n.DataType)if("object"!=r)s(e.ErrorType.BadDataType,{ColumnName:n.Name});else{var o=["+","-","*","/"];for(var u in t){o.indexOf(u)<0&&s(e.ErrorType.BadDataType,{ColumnName:n.Name});break}}}}(t[n.Name])}return!0})}else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n});e.throwError(u)}}else this.ErrorOccured=!0,this.OnSuccess(0)},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e,t=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){(e=n.target.result)&&(e.delete(),++t.RowAffected,e.continue())},n.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var n,r,o=this;this.ObjectStore.index(e);if(o.CheckFlag)for(var s=0,u=t.length;s=0&&(n=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(n=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.key)&&o.checkForWhereConditionMatch(r.value)&&(r.delete(),++o.RowAffected),r.continue())}:this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.key)&&(r.delete(),++o.RowAffected),r.continue())}},n}return __extends(n,t),n}(t.In);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,o=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),s.CheckFlag?o.onsuccess=function(e){(r=e.target.result)&&(s.checkForWhereConditionMatch(r.value)&&(r.delete(),++s.RowAffected),r.continue())}:o.onsuccess=function(e){(r=e.target.result)&&(r.delete(),++s.RowAffected,r.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},u.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.OrInfo.OnSucess(this.RowAffected)}};try{var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s,u.Transaction=t.DbConnection.transaction([r.From],"readwrite"),u.ObjectStore=u.Transaction.objectStore(r.From),u.Transaction.oncomplete=function(){i.onTransactionCompleted()},u.Transaction.onerror=function(e){i.onErrorOccured(e)},r.Where?(r.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:r.From})}return u}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.pushApi=function(e,t){if(!0===t){var n=this;return new Promise(function(t,r){e.OnSuccess=function(e){t(e)},e.OnError=function(e){r(e)},n.prcoessExecutionOfCode(e)})}return this.prcoessExecutionOfCode(e),this},this.prcoessExecutionOfCode=function(t){if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)switch(t.Name){case"create_db":case"open_db":this.RequestQueue.splice(0,0,t),e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode(),e.Status.ConStatus=e.ConnectionStatus.Connected;break;default:this.RequestQueue.push(t)}else this.RequestQueue.push(t),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode();e.log("request pushed: "+t.Name)},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],n={Name:t.Name,Query:t.Query};e.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.log("request finished : "+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){e.WorkerStatus=e.WebWorkerStatus.Failed,e.Status.ConStatus==e.ConnectionStatus.NotStarted&&this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var n=this.getScriptUrl();n&&n.length>0?(e.WorkerInstance=new Worker(n),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},t.executeCodeUsingWorker({Name:"change_log_status",Query:{logging:e.EnableLog}}),setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),e.Status.ConStatus==e.ConnectionStatus.Connected&&t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){if("string"==typeof e.data){switch(e.data.split(":")[1]){case"WorkerFailed":this.onWorkerFailed()}}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var JsStore,Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table;!function(e){var t=function(t){function n(n){void 0===n&&(n=null);var r=t.call(this)||this;return r.openDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.pushApi({Name:"open_db",Query:e,OnSuccess:t,OnError:n},!1)},r.createDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.pushApi({Name:"create_db",OnSuccess:t,OnError:n,Query:e},!1)},r.dropDb=function(e,t){void 0===t&&(t=null);var n=!e;return this.pushApi({Name:"drop_db",OnSuccess:e,OnError:t},n)},r.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"select",Query:e,OnSuccess:t,OnError:n},r)},r.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"count",Query:e,OnSuccess:t,OnError:n},r)},r.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"insert",Query:e,OnSuccess:t,OnError:n},r)},r.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"update",Query:e,OnSuccess:t,OnError:n},r)},r.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"delete",Query:e,OnSuccess:t,OnError:n},r)},r.clear=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=!t;return this.pushApi({Name:"clear",Query:e,OnSuccess:t,OnError:onerror},r)},r.bulkInsert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n;var r=!t;return e.OnSuccess=e.OnError=null,this.pushApi({Name:"bulk_insert",Query:e,OnSuccess:t,OnError:n},r)},r.exportJson=function(e){var t=function(t){var n=document.createElement("a");n.href=t,n.download=e.From+".json",n.click(),r&&r()},n=e.OnError,r=e.OnSuccess;e.OnSuccess=e.OnError=void 0;var o=!r;if(o)return new Promise(function(r,s){this.pushApi({Name:"export_json",Query:e,OnSuccess:t,OnError:n},o).then(function(e){t(e),r()}).catch(function(e){s(e)})});this.pushApi({Name:"export_json",Query:e,OnSuccess:t,OnError:n},o)},e.WorkerStatus==e.WebWorkerStatus.Registered?e.WorkerInstance.terminate():e.WorkerStatus==e.WebWorkerStatus.NotStarted&&KeyStore.init(),r.createWorker(),n&&r.openDb(n),r}return __extends(n,t),n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self&&!self.alert&&(self.onmessage=function(e){JsStore.log("Request executing from WebWorker, request name: "+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)},JsStore.WorkerStatus=JsStore.WebWorkerStatus.Registered,KeyStore.init()); \ No newline at end of file diff --git a/Code/test/cases/helper/helper.js b/Code/test/cases/helper/helper.js index 9ecba927..1d3d4ebe 100644 --- a/Code/test/cases/helper/helper.js +++ b/Code/test/cases/helper/helper.js @@ -1,4 +1,24 @@ describe('Test helper Api', function () { + it('isDbExist without promise', function (done) { + JsStore.isDbExist(DataBase.Name, function (isExist) { + expect(isExist).to.be.an('boolean').to.equal(true); + }); + JsStore.isDbExist("Marvel", function (isExist) { + expect(isExist).to.be.an('boolean').to.equal(false); + done(); + }); + }); + + it('isDbExist with promise', function (done) { + JsStore.isDbExist(DataBase.Name).then(function (isExist) { + expect(isExist).to.be.an('boolean').to.equal(true); + }); + JsStore.isDbExist("Marvel").then(function (isExist) { + expect(isExist).to.be.an('boolean').to.equal(false); + done(); + }); + }); + it('getDbVersion', function (done) { JsStore.getDbVersion(DataBase.Name, function (version) { expect(version).to.be.an('number').to.equal(1); diff --git a/Code/test/karma.config.js b/Code/test/karma.config.js index 50edd013..9655a593 100644 --- a/Code/test/karma.config.js +++ b/Code/test/karma.config.js @@ -10,7 +10,6 @@ module.exports = function (config) { }, files: [ 'scripts/jquery-3.2.1.min.js', - // 'scripts/jsstore.js', '../output/jsstore.js', 'scripts/dbhelper.js', 'cases/insert/*.js', diff --git a/Dist/V 1.3/V 1.3.1/jsstore.d.ts b/Dist/Beta/jsstore.d.ts similarity index 99% rename from Dist/V 1.3/V 1.3.1/jsstore.d.ts rename to Dist/Beta/jsstore.d.ts index 4eb61e45..b71c5b34 100644 --- a/Dist/V 1.3/V 1.3.1/jsstore.d.ts +++ b/Dist/Beta/jsstore.d.ts @@ -1,5 +1,5 @@ /** - * @license :JsStore.js - v1.3.1 - 30/11/2017 + * @license :JsStore.js - v1.3.2 - 15/12/2017 * https://github.com/ujjwalguptaofficial/JsStore * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ declare module KeyStore { @@ -349,7 +349,7 @@ declare module JsStore { * @param {Function} callback * @param {Function} errCallBack */ - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack?: Function) => any; + var isDbExist: (dbInfo: DbInfo, callback?: Function, errCallBack?: Function) => any; /** * get Db Version * @@ -1004,4 +1004,4 @@ declare module JsStore { exportJson: (query: ISelect) => any; } } -export = JsStore; \ No newline at end of file +export = JsStore; diff --git a/Dist/V 1.3/V 1.3.1/jsstore.js b/Dist/Beta/jsstore.js similarity index 99% rename from Dist/V 1.3/V 1.3.1/jsstore.js rename to Dist/Beta/jsstore.js index 0a3b3caa..fd873940 100644 --- a/Dist/V 1.3/V 1.3.1/jsstore.js +++ b/Dist/Beta/jsstore.js @@ -9,7 +9,7 @@ var __extends = (this && this.__extends) || (function () { }; })(); /** - * @license :JsStore.js - v1.3.1 - 30/11/2017 + * @license :JsStore.js - v1.3.2 - 15/12/2017 * https://github.com/ujjwalguptaofficial/JsStore * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ var KeyStore; @@ -679,6 +679,7 @@ var JsStore; * @param {Function} errCallBack */ JsStore.isDbExist = function (dbInfo, callback, errCallBack) { + if (callback === void 0) { callback = null; } if (errCallBack === void 0) { errCallBack = null; } var UsePromise = callback ? false : true; if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { @@ -699,13 +700,13 @@ var JsStore; } else { if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); + JsStore.getDbVersion.call(this, dbInfo, function (dbVersion) { + callback.call(this, Boolean(dbVersion)); }); } else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); + JsStore.getDbVersion.call(this, dbInfo.DbName, function (dbVersion) { + callback.call(this, dbInfo.Table.Version <= dbVersion); }); } } @@ -740,8 +741,9 @@ var JsStore; * @param {Function} callback */ JsStore.getDbVersion = function (dbName, callback) { + var That = this; KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); + callback.call(That, Number(dbVersion)); }); }; /** diff --git a/Dist/Beta/jsstore.js.map b/Dist/Beta/jsstore.js.map new file mode 100644 index 00000000..4bd90ca2 --- /dev/null +++ b/Dist/Beta/jsstore.js.map @@ -0,0 +1 @@ +{"version":3,"file":"jsstore.js","sourceRoot":"","sources":["../License.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../JsStore/enums.ts","../JsStore/interfaces.ts","../JsStore/CommonLogic.ts","../JsStore/UtilsLogic.ts","../JsStore/HelperLogic.ts","../JsStore/Model/Column.ts","../JsStore/Model/Table.ts","../JsStore/Model/DataBase.ts","../JsStore/Business/BaseHelperLogic.ts","../JsStore/Business/BaseLogic.ts","../JsStore/Business/CreateDbLogic.ts","../JsStore/Business/DropDbLogic.ts","../JsStore/Business/InsertHelperLogic.ts","../JsStore/Business/InsertLogic.ts","../JsStore/Business/BulkInsertLogic.ts","../JsStore/Business/OpenDbLogic.ts","../JsStore/Business/ClearLogic.ts","../JsStore/Business/MainLogic.ts","../JsStore/Business/Select/BaseSelectLogic.ts","../JsStore/Business/Select/NotWhereLogic.ts","../JsStore/Business/Select/InLogic.ts","../JsStore/Business/Select/LikeLogic.ts","../JsStore/Business/Select/WhereLogic.ts","../JsStore/Business/Select/JoinLogic.ts","../JsStore/Business/Select/GroupByHelperLogic.ts","../JsStore/Business/Select/HelperLogic.ts","../JsStore/Business/Select/InstanceLogic.ts","../JsStore/Business/Count/BaseCountLogic.ts","../JsStore/Business/Count/NotWhereLogic.ts","../JsStore/Business/Count/InLogic.ts","../JsStore/Business/Count/LikeLogic.ts","../JsStore/Business/Count/WhereLogic.ts","../JsStore/Business/Count/InstanceLogic.ts","../JsStore/Business/Update/BaseUpdateLogic.ts","../JsStore/Business/Update/NotWhereLogic.ts","../JsStore/Business/Update/InLogic.ts","../JsStore/Business/Update/LikeLogic.ts","../JsStore/Business/Update/WhereLogic.ts","../JsStore/Business/Update/InstanceLogic.ts","../JsStore/Business/Delete/BaseDeleteLogic.ts","../JsStore/Business/Delete/NotWhereLogic.ts","../JsStore/Business/Delete/InLogic.ts","../JsStore/Business/Delete/LikeLogic.ts","../JsStore/Business/Delete/WhereLogic.ts","../JsStore/Business/Delete/InstanceLogic.ts","../JsStore/CodeExecutionHelper.ts","../JsStore/JsStoreInstance.ts","../JsStore/DirectCode.ts"],"names":[],"mappings":"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","sourcesContent":["/** \r\n * @license :JsStore.js - v1.3.2 - 15/12/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n\r\n export enum WhereQryOption {\r\n In = \"In\",\r\n Like = \"Like\",\r\n Or = \"Or\"\r\n }\r\n\r\n export enum DataType {\r\n String = \"string\",\r\n Object = \"object\",\r\n Array = \"array\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder,\r\n GroupBy: any,\r\n Aggregate: {\r\n Max: any,\r\n Min: any,\r\n Count: any,\r\n Sum: any,\r\n Avg: any\r\n },\r\n IgnoreCase: boolean,\r\n Distinct: boolean\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n IgnoreCase: boolean,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipDataCheck\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n\r\n export interface IAggregate {\r\n Max: Array,\r\n Min: Array,\r\n Sum: Array,\r\n Count: Array,\r\n Avg: Array\r\n }\r\n\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n\r\n export var log = function (msg) {\r\n if (EnableLog) {\r\n console.log(msg);\r\n }\r\n }\r\n\r\n export var logError = function (msg) {\r\n if (EnableLog) {\r\n console.error(msg);\r\n }\r\n }\r\n}","module JsStore {\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function = null, errCallBack: Function = null) {\r\n var UsePromise = callback ? false : true;\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n resolve(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n resolve(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n })\r\n }\r\n else {\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion.call(this, dbInfo, function (dbVersion) {\r\n callback.call(this, Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion.call(this, dbInfo.DbName, function (dbVersion) {\r\n callback.call(this, dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n reject(Error);\r\n });\r\n }\r\n else if (errCallBack) {\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback.call(That, Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BaseHelper {\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n\r\n protected sortNumberInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a - b;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortNumberInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b - a;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b.toLowerCase().localeCompare(a.toLowerCase());\r\n });\r\n return values;\r\n };\r\n\r\n private getCombination(word: string) {\r\n var Results = [],\r\n doAndPushCombination = function (word: string, chars, index: number) {\r\n if (index == word.length) {\r\n Results.push(chars.join(\"\"));\r\n } else {\r\n var ch = word.charAt(index);\r\n chars[index] = ch.toLowerCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n chars[index] = ch.toUpperCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n }\r\n };\r\n doAndPushCombination(word, [], 0);\r\n return Results;\r\n }\r\n\r\n protected getAllCombinationOfWord(word, isArray) {\r\n if (isArray) {\r\n var Results = [];\r\n for (var i = 0, length = word.length; i < length; i++) {\r\n Results = Results.concat(this.getCombination(word[i]))\r\n }\r\n return Results;\r\n }\r\n else {\r\n return this.getCombination(word);\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base extends BaseHelper {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n logError(Error);\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.Query.IgnoreCase === true) {\r\n this.Query.Where = this.makeQryInCaseSensitive(this.Query.Where);\r\n }\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In':\r\n this.executeInLogic(Column, Value['In']);\r\n break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n case 'Aggregate': break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected makeQryInCaseSensitive = function (qry) {\r\n var Results = [],\r\n ColumnValue,\r\n KeyValue;\r\n for (var column in qry) {\r\n ColumnValue = qry[column];\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n KeyValue = ColumnValue[key]\r\n switch (key) {\r\n case WhereQryOption.In:\r\n Results = Results.concat(this.getAllCombinationOfWord(KeyValue, true));\r\n break;\r\n case WhereQryOption.Like:\r\n break;\r\n default:\r\n Results = Results.concat(this.getAllCombinationOfWord(KeyValue));\r\n }\r\n }\r\n qry[column]['In'] = Results;\r\n }\r\n else {\r\n Results = Results.concat(this.getAllCombinationOfWord(ColumnValue));\r\n qry[column] = {\r\n In: Results\r\n }\r\n }\r\n\r\n }\r\n\r\n return qry;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n DbConnection.close();\r\n setTimeout(function () {\r\n That.deleteDb(name, onSuccess, onError);\r\n }, 100);\r\n }\r\n\r\n deleteDb = function (name: string, onSuccess: Function, onError: Function) {\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"database is blocked, cant be deleted right now.\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n onSuccess();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class InsertHelper extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n protected checkModifyInsertValues = function (table, values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n Value,\r\n TableName = table.Name,\r\n checkDatas = function () {\r\n Value = values[ValueIndex++];\r\n checkInternal();\r\n },\r\n checkInternal = function () {\r\n if (Value) {\r\n checkAndModifyValue();\r\n }\r\n else {\r\n That.insertData(values);\r\n }\r\n },\r\n checkAndModifyValue = function () {\r\n var Index = 0,\r\n checkAndModifyColumn = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(Value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof Value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n Value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && Value[column.Name] == null) { //check Default Schema\r\n Value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n }\r\n else {\r\n checkDatas();\r\n }\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n }\r\n checkDatas();\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends InsertHelper {\r\n private insertData = function (values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable: Function;\r\n if (IsReturn) {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n That.ValuesAffected.push(value);\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n ++That.RowAffected;\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n }\r\n }\r\n }\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n var ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var Table = this.getTable(query.Into);\r\n if (Table) {\r\n if (this.Query.SkipDataCheck) {\r\n this.insertData(this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n else {\r\n this.checkModifyInsertValues(Table, this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BulkInsert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private bulkinsertData = function () {\r\n var That = this;\r\n this.Transaction = DbConnection.transaction([this.Query.Into], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(this.Query.Into);\r\n this.Transaction.oncomplete = function (e) {\r\n That.OnSuccess();\r\n }\r\n this.Query.Values.forEach(function (value) {\r\n That.ObjectStore.add(value);\r\n });\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.bulkinsertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n log('checking connection and executing request:' + request.Name);\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.executeLogic(request);\r\n break;\r\n case 'change_log_status':\r\n this.changeLogStatus(request);\r\n default:\r\n switch (Status.ConStatus) {\r\n case ConnectionStatus.Connected: {\r\n this.executeLogic(request);\r\n }; break;\r\n case ConnectionStatus.Closed: {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }; break;\r\n }\r\n }\r\n }\r\n\r\n private changeLogStatus = function (request) {\r\n if (request.Query['logging'] === true) {\r\n EnableLog = true;\r\n }\r\n else {\r\n EnableLog = false;\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'bulk_insert': this.bulkInsert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'export_json': this.exportJson(request.Query, OnSuccess, OnError);\r\n break;\r\n default: console.error('The Api:-' + request.Name + 'does not support');\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public bulkInsert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new BulkInsert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n\r\n public exportJson = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n this.select(query, function (results) {\r\n var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], {\r\n type: \"text/json\"\r\n }));\r\n onSuccess(Url);\r\n }, function (err) {\r\n onError(err);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class In extends NotWhere {\r\n private executeSkipAndLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n skipOrPush(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkipForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n skipOrPush((Cursor.value));\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeSimpleForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n protected executeInLogic = function (column, values) {\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimitForIn(column, values);\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkipForIn(column, values);\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimitForIn(column, values);\r\n }\r\n else {\r\n this.executeSimpleForIn(column, values);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class GroupByHelper extends Where {\r\n constructor() {\r\n super();\r\n }\r\n\r\n private executeAggregateGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = undefined;\r\n //assign aggregate and free aggregate memory\r\n var AggregateQry = this.Query.Aggregate;\r\n this.Query.Aggregate = undefined;\r\n var Index, ObjKey, Value, AggrColumn;\r\n var calculateAggregate = function () {\r\n for (var prop in AggregateQry) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Max(\" + AggrColumn + \")\"] : 0;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n //compare between old value and new value\r\n return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Min(\" + AggrColumn + \")\"] : Infinity;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity;\r\n //compare between old value and new value\r\n return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old sum value\r\n var Sum = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = Sum;\r\n //get old count value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = Value;\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n getAvg();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (typeof GrpQry == 'string') {\r\n for (Index in Datas) {\r\n ObjKey = Datas[Index][GrpQry];\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n }\r\n else {\r\n for (Index in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[Index][GrpQry[column]];\r\n }\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (var i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n //Checking for avg and if exist then fill the datas;\r\n if (AggregateQry.Avg) {\r\n if (typeof AggregateQry.Avg == 'string') {\r\n for (Index in Datas) {\r\n var Sum = Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"],\r\n Count = Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n Datas[Index][\"Avg(\" + AggregateQry.Avg + \")\"] = Sum / Count;\r\n if (AggregateQry.Count !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n }\r\n if (AggregateQry.Sum !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"];\r\n }\r\n }\r\n }\r\n else {\r\n var IsCountTypeString = typeof AggregateQry.Count,\r\n IsSumTypeString = typeof AggregateQry.Count;\r\n for (Index in Datas) {\r\n for (var column in AggregateQry.Avg) {\r\n var AvgColumn = AggregateQry.Avg[column],\r\n Sum = Datas[Index][\"Sum(\" + AvgColumn + \")\"],\r\n Count = Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n Datas[Index][\"Avg(\" + AvgColumn + \")\"] = Sum / Count;\r\n\r\n if (IsCountTypeString) {\r\n if (AggregateQry.Count !== AvgColumn) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Count.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n\r\n if (IsSumTypeString) {\r\n if (AggregateQry.Sum !== AvgColumn) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.Results = Datas;\r\n };\r\n\r\n protected processGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = this.Query.GroupBy = undefined;\r\n if (typeof GrpQry == 'string') {\r\n for (var i in Datas) {\r\n LookUpObj[Datas[i][GrpQry]] = Datas[i];\r\n }\r\n }\r\n else {\r\n var ObjKey;\r\n for (var i in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[i][GrpQry[column]];\r\n }\r\n LookUpObj[ObjKey] = Datas[i];\r\n }\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Helper extends GroupByHelper {\r\n processOrderBy = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private processAggregateQry = function () {\r\n var Datas = this.Results,\r\n Results = {},\r\n Key;\r\n //free results memory\r\n this.Results = undefined;\r\n for (var prop in this.Query.Aggregate) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key] ? 1 : 0;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result = Result > Datas[i][Key] ? Result : Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n var Result = Infinity, Value = Infinity;\r\n for (var i in Datas) {\r\n Value = Datas[i][Key] ? Datas[i][Key] : Infinity;\r\n Result = Result < Value ? Result : Value;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result / Datas.length;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n //add results to the first index of result\r\n for (var prop in Results) {\r\n Datas[0][prop] = Results[prop];\r\n }\r\n this.Results = Datas;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Helper {\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.processOrderBy();\r\n if (this.Query.Distinct) {\r\n var GroupBy = [];\r\n var Result = this.Results[0];\r\n for (var key in Result) {\r\n GroupBy.push(key);\r\n }\r\n var PrimaryKey = this.getPrimaryKey(this.Query.From),\r\n Index = GroupBy.indexOf(PrimaryKey);\r\n GroupBy.splice(Index, 1);\r\n this.Query.GroupBy = GroupBy.length > 0 ? GroupBy : null;\r\n }\r\n if (this.Query.GroupBy) {\r\n if (this.Query.Aggregate) {\r\n this.executeAggregateGroupBy();\r\n }\r\n else {\r\n this.processGroupBy();\r\n }\r\n }\r\n else if (this.Query.Aggregate) {\r\n this.processAggregateQry();\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.count(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n That.ResultCount += (e).target.result;\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (That.CheckFlag) {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n protected onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this,\r\n Cursor: IDBCursorWithValue;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected pushApi = function (request: IWebWorkerRequest, usePromise: boolean) {\r\n if (usePromise === true) {\r\n var That = this;\r\n return new Promise(function (resolve, reject) {\r\n request.OnSuccess = function (result) {\r\n resolve(result);\r\n };\r\n request.OnError = function (error) {\r\n reject(error);\r\n };\r\n That.prcoessExecutionOfCode(request);\r\n });\r\n }\r\n else {\r\n this.prcoessExecutionOfCode(request);\r\n return this;\r\n }\r\n }\r\n\r\n private prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.RequestQueue.splice(0, 0, request);\r\n if (WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n };\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n break;\r\n default: this.RequestQueue.push(request);\r\n }\r\n }\r\n else {\r\n this.RequestQueue.push(request);\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n log(\"request pushed: \" + request.Name);\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n log(\"request executing : \" + FirstRequest.Name);\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n log(\"request finished : \" + FinishedRequest.Name);\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n protected createWorker = function () {\r\n var That: CodeExecutionHelper = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n That.executeCodeUsingWorker({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n That.executeCode();\r\n }\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\ndeclare var Promise: any;\r\n\r\nmodule JsStore {\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n WorkerInstance.terminate();\r\n }\r\n else if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n KeyStore.init();\r\n }\r\n this.createWorker();\r\n if (dbName) {\r\n this.openDb(dbName);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * open database\r\n * \r\n * @param {string} dbName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n openDb = function (dbName: string, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'open_db',\r\n Query: dbName,\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n }, false);\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {Model.IDataBase} dataBase \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n createDb = function (dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n }, false);\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb = function (onSuccess: Function, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select = function (query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count = function (query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update = function (query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete = function (query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear = function (tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * insert bulk amount of data\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n bulkInsert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n var UsePromise = onSuccess ? false : true;\r\n query.OnSuccess = query.OnError = null;\r\n return this.pushApi({\r\n Name: 'bulk_insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * export the result in json file\r\n * \r\n * @param {ISelect} qry \r\n * @memberof Instance\r\n */\r\n exportJson = function (query: ISelect) {\r\n var OnSuccess = function (url) {\r\n var Link = document.createElement(\"a\");\r\n Link.href = url;\r\n Link.download = query.From + \".json\";\r\n Link.click();\r\n if (OnSuccessCallBack) {\r\n OnSuccessCallBack();\r\n }\r\n },\r\n OnError = query['OnError'],\r\n OnSuccessCallBack = query['OnSuccess'];\r\n query['OnSuccess'] = query['OnError'] = undefined;\r\n var UsePromise = OnSuccessCallBack ? false : true;\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise).then(function (url) {\r\n OnSuccess(url);\r\n resolve();\r\n }).catch(function (err) {\r\n reject(err);\r\n });\r\n });\r\n }\r\n else {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","if (self && !self.alert) {\r\n self.onmessage = function (e) {\r\n JsStore.log(\"Request executing from WebWorker, request name: \" + e.data.Name);\r\n var Request = e.data,\r\n BusinessMain = new JsStore.Business.Main();\r\n BusinessMain.checkConnectionAndExecuteLogic(Request);\r\n };\r\n JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered;\r\n KeyStore.init();\r\n}\r\n\r\n"]} \ No newline at end of file diff --git a/Dist/Beta/jsstore.min.js b/Dist/Beta/jsstore.min.js new file mode 100644 index 00000000..2f203f32 --- /dev/null +++ b/Dist/Beta/jsstore.min.js @@ -0,0 +1,5 @@ +/** + * @license :JsStore.js - v1.3.2 - 15/12/2017 + * https://github.com/ujjwalguptaofficial/JsStore + * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ +var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:self.postMessage("message:WorkerFailed")},e}();e.Utils=t}(KeyStore||(KeyStore={}));!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){++this.ErrorCount,1==this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this,t=function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}};for(var n in this.Query.Where){t(n,this.Query.Where[n]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this,t=function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}};for(var n in this.Query.Where){e.ErrorOccured||t(n,e.Query.Where[n]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName,function(){r.checkConnectionAndExecuteLogic(n)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={}));!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.In="In",e.Like="Like",e.Or="Or"}(e.WhereQryOption||(e.WhereQryOption={}));!function(e){e.String="string",e.Object="object",e.Array="array"}(e.DataType||(e.DataType={}))}(JsStore||(JsStore={}));!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.TempResults=[],e.throwError=function(e){throw e},e.getObjectFirstKey=function(e){for(var t in e)return t;return null},e.log=function(t){e.EnableLog},e.logError=function(t){e.EnableLog}}(JsStore||(JsStore={}));!function(e){var t=function(){function t(){}return t.getError=function(t,n){var r={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:r.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:r.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:r.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:r.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:r.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:r.Message="No value supplied";break;case e.ErrorType.InvalidOp:r.Message="Invalid Op Value '"+n.Op+"'";break;case e.ErrorType.ColumnNotExist:r.Message="Column '"+n.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:r.Message="Null value is not allowed for column '"+n.ColumnName+"'";break;case e.ErrorType.BadDataType:r.Message="Supplied value for column '"+n.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:r.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:r.Message="Table '"+n.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:r.Message="Database '"+n.DbName+"' does not exist"}return r},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));!function(e){e.isDbExist=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o=!n;if(e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){if(o)return new Promise(function(n,r){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})});"string"==typeof t?e.getDbVersion.call(this,t,function(e){n.call(this,Boolean(e))}):e.getDbVersion.call(this,t.DbName,function(e){n.call(this,t.Table.Version<=e)})}else{var s={Name:e.Status.LastError,Message:""};switch(s.Name){case e.ErrorType.IndexedDbBlocked:s.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:s.Message="IndexedDB is not supported"}if(o)return new Promise(function(e,t){t(s)});r&&r(s)}},e.getDbVersion=function(e,t){var n=this;KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t.call(n,Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})},e.disableLog=function(){e.EnableLog=!1,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})}}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(t,n){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+n),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:ethis.Version?e.DbVersion:this.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+this.Name+"_Version",e.DbVersion),this.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));!function(e){!function(e){var t=function(){function t(){this.getTable=function(t){var n;return e.ActiveDataBase.Tables.every(function(e){return e.Name!=t||(n=e,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n},this.getObjectSecondKey=function(e){var t=!1;for(var n in e){if(t)return n;t=!0}},this.getPrimaryKey=function(e){var t=this.getTable(e).PrimaryKey;return t||this.getKeyPath()},this.getKeyPath=function(t){return e.DbConnection.transaction([t],"readonly").objectStore(t).keyPath},this.sortNumberInAsc=function(e){return e.sort(function(e,t){return e-t}),e},this.sortNumberInDesc=function(e){return e.sort(function(e,t){return t-e}),e},this.sortAlphabetInAsc=function(e){return e.sort(function(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}),e},this.sortAlphabetInDesc=function(e){return e.sort(function(e,t){return t.toLowerCase().localeCompare(e.toLowerCase())}),e}}return t.prototype.getCombination=function(e){var t=[],n=function(e,r,o){if(o==e.length)t.push(r.join(""));else{var s=e.charAt(o);r[o]=s.toLowerCase(),n(e,r,o+1),r[o]=s.toUpperCase(),n(e,r,o+1)}};return n(e,[],0),t},t.prototype.getAllCombinationOfWord=function(e,t){if(t){for(var n=[],r=0,o=e.length;r1||Object.keys(this.Query.Where).length>1);var r=e.getObjectFirstKey(n);switch(r){case"Like":var o=n.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":this.executeInLogic(t,n.In);break;case"-":case">":case"<":case">=":case"<=":this.executeWhereLogic(t,n,r);break;case"Aggregate":break;default:this.executeWhereLogic(t,n)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)},n.makeQryInCaseSensitive=function(t){var n,r,o=[];for(var s in t)if("object"==typeof(n=t[s])){for(var u in n)switch(r=n[u],u){case e.WhereQryOption.In:o=o.concat(this.getAllCombinationOfWord(r,!0));break;case e.WhereQryOption.Like:break;default:o=o.concat(this.getAllCombinationOfWord(r))}t[s].In=o}else o=o.concat(this.getAllCombinationOfWord(n)),t[s]={In:o};return t},n}return __extends(n,t),n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0,o=function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(i=o.indexOf(u.toLowerCase()))<0&&(r=!1);break;case e.Occurence.First:((i=o.indexOf(u.toLowerCase()))>0||i<0)&&(r=!1);break;default:(i=o.lastIndexOf(u.toLowerCase()))":t<=s&&(r=!1);break;case"<":t>=s&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}};for(var i in n){var c=n[i];if(!r)break;if("object"==typeof c)for(var a in c){if(!r)break;switch(a){case"In":o(i,t[i]);break;case"Like":s(i,t[i]);break;case"-":case">":case"<":case">=":case"<=":u(i,t[i],a)}}else{if(c!=t[i]){r=!1;break}}}return r},n}(t.BaseHelper);t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(n,r,o){var s=[],u=indexedDB.open(t.ActiveDataBase.Name,n);u.onerror=function(e){null!=o&&o(e.target.error)},u.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=r&&r(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},u.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),i(n,e)):e.RequireCreation&&i(n,e)})};var i=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}s.push(n.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(n,r,o){this.deleteDb=function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("database is blocked, cant be deleted right now.")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),r()}};var s=this;t.DbConnection.close(),setTimeout(function(){s.deleteDb(n,r,o)},100)}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.ValuesAffected=[],r.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},r.checkModifyInsertValues=function(n,r){var o,s=this,u=0,i=n.Name,c=function(){o=r[u++],a()},a=function(){o?l():s.insertData(r)},l=function(){var r=0,u=function(a){if(a){var l=function(t,n){s.ErrorOccured=!0,s.Error=e.Utils.getError(t,n)},h=function(){a.NotNull&&e.isNull(o[a.Name])?l(e.ErrorType.NullValue,{ColumnName:a.Name}):a.DataType&&typeof o[a.Name]!=a.DataType&&l(e.ErrorType.BadDataType,{ColumnName:a.Name}),u(n.Columns[r++])};s.ErrorOccured?s.onErrorOccured(s.Error,!0):a.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",function(e){o[a.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",e),h()}):a.Default&&null==o[a.Name]?(o[a.Name]=a.Default,h()):h()}else c()};u(n.Columns[r++])};c()},r}return __extends(r,n),r}(t.Base);t.InsertHelper=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.insertData=function(e){var n,r=this,o=0,s=this.Query.Return;n=s?function(t){if(t){var s=u.add(t);s.onerror=function(e){r.onErrorOccured(e)},s.onsuccess=function(s){r.ValuesAffected.push(t),n(e[o++])}}}:function(t){if(t){var s=u.add(t);s.onerror=function(e){r.onErrorOccured(e)},s.onsuccess=function(t){++r.RowAffected,n(e[o++])}}},r.Transaction=t.DbConnection.transaction([r.Query.Into],"readwrite");var u=r.Transaction.objectStore(r.Query.Into);r.Transaction.oncomplete=function(e){r.onTransactionCompleted()},n(e[o++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;var i=u.getTable(r.Into);if(i)u.Query.SkipDataCheck?(u.insertData(u.Query.Values),u.Query.Values=void 0):(u.checkModifyInsertValues(i,u.Query.Values),u.Query.Values=void 0);else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r}(t.InsertHelper);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.bulkinsertData=function(){var e=this;this.Transaction=t.DbConnection.transaction([this.Query.Into],"readwrite"),this.ObjectStore=this.Transaction.objectStore(this.Query.Into),this.Transaction.oncomplete=function(t){e.OnSuccess()},this.Query.Values.forEach(function(t){e.ObjectStore.add(t)})};try{u.Query=r,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(r.Into),u.Table)u.bulkinsertData();else{var i=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(i)}}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r}(t.Base);t.BulkInsert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=r&&r()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.set("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value",0)}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){switch(e.log("checking connection and executing request:"+n.Name),n.Name){case"create_db":case"open_db":this.executeLogic(n);break;case"change_log_status":this.changeLogStatus(n);default:switch(e.Status.ConStatus){case e.ConnectionStatus.Connected:this.executeLogic(n);break;case e.ConnectionStatus.Closed:var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}}},this.changeLogStatus=function(t){!0===t.Query.logging?e.EnableLog=!0:e.EnableLog=!1},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"bulk_insert":this.bulkInsert(e.Query,n,r);break;case"export_json":this.exportJson(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){Array.isArray(n.Values)?new t.Insert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.bulkInsert=function(n,r,o){Array.isArray(n.Values)?new t.BulkInsert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.exportJson=function(e,t,n){this.select(e,function(e){var n=URL.createObjectURL(new Blob([JSON.stringify(e)],{type:"text/json"}));t(n)},function(e){n(e)})},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.Sorted=!1,t.CheckFlag=!1,t.removeDuplicates=function(){var e=this.Results;this.Results=void 0;var t=this.getPrimaryKey(this.Query.From),n={};for(var r in e)n[e[r][t]]=e[r];e=[];for(r in n)e.push(n[r]);this.Results=e},t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n,r=this;if(this.Query.Order&&this.Query.Order.By)if(r.ObjectStore.indexNames.contains(this.Query.Order.By)){var o=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,n=this.ObjectStore.index(r.Query.Order.By).openCursor(null,o)}else{var s=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(s)}else n=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;n.onsuccess=function(n){(t=n.target.result)&&(e&&r.Results.length!=r.LimitRecord?(r.Results.push(t.value),t.continue()):(e=!0,t.advance(r.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;n.onsuccess=function(n){(t=n.target.result)&&(e?(r.Results.push(t.value),t.continue()):(e=!0,t.advance(r.SkipRecord)))}}():this.LimitRecord?n.onsuccess=function(e){(t=e.target.result)&&r.Results.length!=r.LimitRecord&&(r.Results.push(t.value),t.continue())}:n.onsuccess=function(e){(t=e.target.result)&&(r.Results.push(t.value),t.continue())},n.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeSkipAndLimitForIn=function(e,t){var n,r=this.SkipRecord,o=this,s=this.ObjectStore.index(e),u=function(e){0==r?o.Results.push(e):--r};if(o.CheckFlag)for(var i=0,c=t.length;i=0&&(n=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(n=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e,t=this.SkipRecord,n=this,r=function(e){0==t?n.Results.push(e):--t};n.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,n.Results.length!=n.LimitRecord&&e&&(n.filterOnOccurence(e.key)&&n.checkForWhereConditionMatch(e.value)&&r(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,n.Results.length!=n.LimitRecord&&e&&(n.filterOnOccurence(e.key)&&r(e.value),e.continue())}},n.executeSkip=function(){var e,t=this.SkipRecord,n=this,r=function(e){0==t?n.Results.push(e):--t};n.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(n.filterOnOccurence(e.key)&&n.checkForWhereConditionMatch(e.value)&&r(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(n.filterOnOccurence(e.key)&&r(e.value),e.continue())}},n.executeLimit=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(n){e=n.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.key)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(n){e=n.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.key)&&t.Results.push(e.value),e.continue())}},n.executeSimple=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(n){(e=n.target.result)&&(t.filterOnOccurence(e.key)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(n){(e=n.target.result)&&(t.filterOnOccurence(e.key)&&t.Results.push(e.value),e.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.In);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.LimitRecord?s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&s.checkForWhereConditionMatch(o.value)&&(s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&(s.Results.push(o.value),o.continue())}:s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&(s.Results.push(o.value),o.continue())}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},function(e){r.ErrorOccured=!0,r.onErrorOccured(e)})},s.executeWhereUndefinedLogicForJoin=function(t,n){var r=this,o=[],s=0,u=(n.Column,r.Results),i=u.length,c=0,a={},l=function(){c0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;tr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null))};l()},s.OnSuccess=r,s.OnError=o,s.Query=n;var u=s,i=[],c=function(e){return e.hasOwnProperty("Table1")?(e.Table2.JoinType=void 0==e.Join?"inner":e.Join.toLowerCase(),u.QueryStack.push(e.Table2),u.QueryStack.length%2==0&&(u.QueryStack[u.QueryStack.length-1].NextJoin=e.NextJoin),i.push(e.Table2.Table),c(e.Table1)):(u.QueryStack.push(e),void i.push(e.Table))};return c(n.From),s.QueryStack.reverse(),s.ErrorOccured||new e.Instance({From:s.QueryStack[0].Table,Where:s.QueryStack[0].Where},function(e){var t=u.QueryStack[0].Table;e.forEach(function(e,n){u.Results[n]={},u.Results[n][t]=e}),u.startExecutionJoinLogic()},function(e){u.onErrorOccured(e)}),s}return __extends(n,t),n.prototype.startExecutionJoinLogic=function(){var e;this.CurrentQueryStackIndex>=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=e.call(this)||this;return t.executeAggregateGroupBy=function(){var e=this.Query.GroupBy,t=this.Results,n={};this.Results=void 0;var r=this.Query.Aggregate;this.Query.Aggregate=void 0;var o,s,u,i,c=function(){for(var e in r)switch(e){case"Count":var c=function(){return u=n[s],u=u?u["Count("+i+")"]:0,u+=t[o][i]?1:0};if("string"==typeof r[e])i=r[e],t[o]["Count("+i+")"]=c();else if(Array.isArray(r[e]))for(var a in r[e])i=r[e][a],t[o]["Count("+i+")"]=c();break;case"Max":var l=function(){return u=n[s],u=u?u["Max("+i+")"]:0,t[o][i]=t[o][i]?t[o][i]:0,u>t[o][i]?u:t[o][i]};if("string"==typeof r[e])i=r[e],t[o]["Max("+i+")"]=l();else if(Array.isArray(r[e]))for(var a in r[e])i=r[e][a],t[o]["Max("+i+")"]=l();break;case"Min":var h=function(){return u=n[s],u=u?u["Min("+i+")"]:1/0,t[o][i]=t[o][i]?t[o][i]:1/0,u0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]}))}},t.processAggregateQry=function(){var e,t=this.Results,n={};this.Results=void 0;for(var r in this.Query.Aggregate)switch(r){case"Count":var o=function(){var n=0;for(var r in t)n+=t[r][e]?1:0;return n};if("string"==typeof this.Query.Aggregate[r])n["Count("+(e=this.Query.Aggregate[r])+")"]=o();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Count("+(e=this.Query.Aggregate[r][s])+")"]=o();break;case"Max":var u=function(){var n=0;for(var r in t)n=n>t[r][e]?n:t[r][e];return n};if("string"==typeof this.Query.Aggregate[r])n["Max("+(e=this.Query.Aggregate[r])+")"]=u();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Max("+(e=this.Query.Aggregate[r][s])+")"]=u();break;case"Min":var i=function(){var n=1/0,r=1/0;for(var o in t)n=n<(r=t[o][e]?t[o][e]:1/0)?n:r;return n};if("string"==typeof this.Query.Aggregate[r])n["Min("+(e=this.Query.Aggregate[r])+")"]=i();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Min("+(e=this.Query.Aggregate[r][s])+")"]=i();break;case"Sum":var c=function(){var n=0;for(var r in t)n+=t[r][e];return n};if("string"==typeof this.Query.Aggregate[r])n["Sum("+(e=this.Query.Aggregate[r])+")"]=c();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Sum("+(e=this.Query.Aggregate[r][s])+")"]=c();break;case"Avg":var a=function(){var n=0;for(var r in t)n+=t[r][e];return n/t.length};if("string"==typeof this.Query.Aggregate[r])n["Avg("+(e=this.Query.Aggregate[r])+")"]=a();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Avg("+(e=this.Query.Aggregate[r][s])+")"]=a()}for(var r in n)t[0][r]=n[r];this.Results=t},t}return __extends(t,e),t}(e.GroupByHelper);e.Helper=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){if(this.SendResultFlag){if(this.processOrderBy(),this.Query.Distinct){var e=[],t=this.Results[0];for(var n in t)e.push(n);var r=this.getPrimaryKey(this.Query.From),o=e.indexOf(r);e.splice(o,1),this.Query.GroupBy=e.length>0?e:null}this.Query.GroupBy?this.Query.Aggregate?this.executeAggregateGroupBy():this.processGroupBy():this.Query.Aggregate&&this.processAggregateQry(),this.OnSuccess(this.Results)}},u.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readonly"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.orQuerySuccess=function(){this.Results=this.OrInfo.Results,this.OrInfo.Results=void 0,this.removeDuplicates(),this.OrInfo.OnSucess(this.Results)},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess,Results:[]},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){if(this.OrInfo.Results=this.OrInfo.Results.concat(this.Results),!this.Query.Limit||this.Query.Limit>this.OrInfo.Results.length){this.Results=[];var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.orQuerySuccess()}else this.orQuerySuccess()}};var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s,u.SkipRecord=u.Query.Skip,u.LimitRecord=u.Query.Limit;try{u.Transaction=t.DbConnection.transaction([r.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.Transaction.ontimeout=i.onTransactionCompleted,u.ObjectStore=u.Transaction.objectStore(r.From),r.Where?(r.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:r.From})}return u}return __extends(r,n),r}(n.Helper);n.Instance=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var n,r=this.ObjectStore.openCursor();r.onsuccess=function(t){(n=t.target.result)&&(++e.ResultCount,n.continue())},r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var n,r,o=this,s=this.ObjectStore.index(e);if(o.CheckFlag)for(var u=0,i=t.length;u=0&&(n=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(n=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.key)&&o.checkForWhereConditionMatch(r.value)&&++o.ResultCount,r.continue())}:this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.key)&&++o.ResultCount,r.continue())}},n}return __extends(n,t),n}(t.In);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r=this;if(t=n?t[n]:t,r.CheckFlag){(u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){(s=e.target.result)&&(r.checkForWhereConditionMatch(s.value)&&++r.ResultCount,s.continue())},u.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else if(this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,n));o.onsuccess=function(){r.ResultCount=o.result},o.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else{var s,u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n));u.onsuccess=function(e){(s=e.target.result)&&(++r.ResultCount,s.continue())},u.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o;try{var i=function(){u.Transaction=e.DbConnection.transaction([n.From],"readonly"),u.ObjectStore=u.Transaction.objectStore(n.From),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};void 0!=n.Where?n.Where.Or?new e.Select.Instance(n,function(e){u.ResultCount=e.length,u.onTransactionCompleted()},s.OnError):(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e,n=this,r=this.ObjectStore.openCursor();r.onsuccess=function(r){(e=r.target.result)&&(e.update(t.updateValue(n.Query.Set,e.value)),++n.RowAffected,e.continue())},r.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeInLogic=function(t,n){var r,o,s=this,u=this.ObjectStore.index(t);if(s.CheckFlag)for(var i=0,c=n.length;i=0&&(n=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(n=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o,s=this;this.CompValue=n.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},s.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.key)&&s.checkForWhereConditionMatch(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}:this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.key)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}},r}return __extends(r,n),r}(t.In);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereLogic=function(t,n,r){var o,s,u=this;n=r?n[r]:n,s=this.ObjectStore.index(t).openCursor(this.getKeyRange(n,r)),u.CheckFlag?s.onsuccess=function(t){(o=t.target.result)&&(u.checkForWhereConditionMatch(o.value)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected),o.continue())}:s.onsuccess=function(t){(o=t.target.result)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected,o.continue())},s.onerror=function(e){u.ErrorOccured=!0,u.onErrorOccured(e)}},n}return __extends(n,t),n}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},s.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.In],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.In),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},s.executeOrLogic=function(){var e=this;new t.Select.Instance({From:this.Query.In,Where:this.Query.Where},function(t){var n=e.getPrimaryKey(e.Query.In),r=[],o={};t.forEach(function(e){r.push(e[n])}),o[n]={In:r},e.createtransactionForOrLogic({In:e.Query.In,Where:o,Set:e.Query.Set})},this.OnError)};try{if(s.OnSuccess=r,s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e;var u=s,i=function(){u.Transaction=t.DbConnection.transaction([e.In],"readwrite"),u.ObjectStore=u.Transaction.objectStore(e.In),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};e.Where?e.Where.Or?s.executeOrLogic():(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){if(t){var r=this.getTable(n),o=this;if(r){var s=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)};r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){!function(t){if(n.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:n.Name}),n.DataType){var r=typeof t;if(r!=n.DataType)if("object"!=r)s(e.ErrorType.BadDataType,{ColumnName:n.Name});else{var o=["+","-","*","/"];for(var u in t){o.indexOf(u)<0&&s(e.ErrorType.BadDataType,{ColumnName:n.Name});break}}}}(t[n.Name])}return!0})}else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n});e.throwError(u)}}else this.ErrorOccured=!0,this.OnSuccess(0)},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e,t=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){(e=n.target.result)&&(e.delete(),++t.RowAffected,e.continue())},n.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var n,r,o=this;this.ObjectStore.index(e);if(o.CheckFlag)for(var s=0,u=t.length;s=0&&(n=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(n=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.key)&&o.checkForWhereConditionMatch(r.value)&&(r.delete(),++o.RowAffected),r.continue())}:this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.key)&&(r.delete(),++o.RowAffected),r.continue())}},n}return __extends(n,t),n}(t.In);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,o=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),s.CheckFlag?o.onsuccess=function(e){(r=e.target.result)&&(s.checkForWhereConditionMatch(r.value)&&(r.delete(),++s.RowAffected),r.continue())}:o.onsuccess=function(e){(r=e.target.result)&&(r.delete(),++s.RowAffected,r.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},u.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.OrInfo.OnSucess(this.RowAffected)}};try{var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s,u.Transaction=t.DbConnection.transaction([r.From],"readwrite"),u.ObjectStore=u.Transaction.objectStore(r.From),u.Transaction.oncomplete=function(){i.onTransactionCompleted()},u.Transaction.onerror=function(e){i.onErrorOccured(e)},r.Where?(r.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:r.From})}return u}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.pushApi=function(e,t){if(!0===t){var n=this;return new Promise(function(t,r){e.OnSuccess=function(e){t(e)},e.OnError=function(e){r(e)},n.prcoessExecutionOfCode(e)})}return this.prcoessExecutionOfCode(e),this},this.prcoessExecutionOfCode=function(t){if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)switch(t.Name){case"create_db":case"open_db":this.RequestQueue.splice(0,0,t),e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode(),e.Status.ConStatus=e.ConnectionStatus.Connected;break;default:this.RequestQueue.push(t)}else this.RequestQueue.push(t),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode();e.log("request pushed: "+t.Name)},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],n={Name:t.Name,Query:t.Query};e.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.log("request finished : "+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){e.WorkerStatus=e.WebWorkerStatus.Failed,e.Status.ConStatus==e.ConnectionStatus.NotStarted&&this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var n=this.getScriptUrl();n&&n.length>0?(e.WorkerInstance=new Worker(n),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},t.executeCodeUsingWorker({Name:"change_log_status",Query:{logging:e.EnableLog}}),setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),e.Status.ConStatus==e.ConnectionStatus.Connected&&t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){if("string"==typeof e.data){switch(e.data.split(":")[1]){case"WorkerFailed":this.onWorkerFailed()}}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var JsStore,Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table;!function(e){var t=function(t){function n(n){void 0===n&&(n=null);var r=t.call(this)||this;return r.openDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.pushApi({Name:"open_db",Query:e,OnSuccess:t,OnError:n},!1)},r.createDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.pushApi({Name:"create_db",OnSuccess:t,OnError:n,Query:e},!1)},r.dropDb=function(e,t){void 0===t&&(t=null);var n=!e;return this.pushApi({Name:"drop_db",OnSuccess:e,OnError:t},n)},r.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"select",Query:e,OnSuccess:t,OnError:n},r)},r.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"count",Query:e,OnSuccess:t,OnError:n},r)},r.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"insert",Query:e,OnSuccess:t,OnError:n},r)},r.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"update",Query:e,OnSuccess:t,OnError:n},r)},r.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"delete",Query:e,OnSuccess:t,OnError:n},r)},r.clear=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=!t;return this.pushApi({Name:"clear",Query:e,OnSuccess:t,OnError:onerror},r)},r.bulkInsert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n;var r=!t;return e.OnSuccess=e.OnError=null,this.pushApi({Name:"bulk_insert",Query:e,OnSuccess:t,OnError:n},r)},r.exportJson=function(e){var t=function(t){var n=document.createElement("a");n.href=t,n.download=e.From+".json",n.click(),r&&r()},n=e.OnError,r=e.OnSuccess;e.OnSuccess=e.OnError=void 0;var o=!r;if(o)return new Promise(function(r,s){this.pushApi({Name:"export_json",Query:e,OnSuccess:t,OnError:n},o).then(function(e){t(e),r()}).catch(function(e){s(e)})});this.pushApi({Name:"export_json",Query:e,OnSuccess:t,OnError:n},o)},e.WorkerStatus==e.WebWorkerStatus.Registered?e.WorkerInstance.terminate():e.WorkerStatus==e.WebWorkerStatus.NotStarted&&KeyStore.init(),r.createWorker(),n&&r.openDb(n),r}return __extends(n,t),n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self&&!self.alert&&(self.onmessage=function(e){JsStore.log("Request executing from WebWorker, request name: "+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)},JsStore.WorkerStatus=JsStore.WebWorkerStatus.Registered,KeyStore.init()); \ No newline at end of file diff --git a/Dist/Beta/jsstore.min.js.map b/Dist/Beta/jsstore.min.js.map new file mode 100644 index 00000000..e6ea37cd --- /dev/null +++ b/Dist/Beta/jsstore.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["output/jsstore.js"],"names":["__extends","this","extendStatics","Object","setPrototypeOf","__proto__","Array","d","b","p","hasOwnProperty","__","constructor","prototype","create","KeyStore","Utils","setDbType","self","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","IDBTransaction","webkitIDBTransaction","msIDBTransaction","IDBKeyRange","webkitIDBKeyRange","msIDBKeyRange","alert","JsStore","Status","ConStatus","ConnectionStatus","UnableToStart","LastError","ErrorType","IndexedDbUndefined","postMessage","RequestQueue","TableName","IsCodeExecuting","prcoessExecutionOfCode","request","push","length","executeCode","Request","Name","Query","executeCodeDirect","That","Business","Main","results","processFinishedRequest","checkConnectionAndExecuteLogic","message","FinishedRequest","shift","ErrorOccured","OnError","ErrorDetails","OnSuccess","ReturnedValue","Base","Results","ErrorCount","onErrorOccured","e","target","error","Get","_super","query","onSuccess","onError","_this","call","get","getData","column","value","CursorOpenRequest","ObjectStore","index","openCursor","only","onerror","onsuccess","Cursor","result","Where","Transaction","DbConnection","transaction","From","objectStore","oncomplete","Set","setData","insertData","add","update","updateIfExistElseInsert","ex","Remove","RowAffected","remove","removeData","delete","continue","Column","InitDb","dbName","tableName","DbRequest","open","event","name","IndexedDbBlocked","Connected","onclose","Closed","onversionchange","newVersion","close","onabort","onupgradeneeded","createObjectStore","keyPath","createIndex","unique","NotStarted","executeLogic","setTimeout","createDb","returnResult","err","set","init","key","Key","Value","Occurence","WebWorkerStatus","WhereQryOption","DataType","EnableLog","DbVersion","TempResults","throwError","getObjectFirstKey","log","msg","logError","getError","errorType","errorDetail","Error","Message","NotArray","UndefinedColumn","UndefinedValue","UndefinedColumnName","UndefinedColumnValue","NoValueSupplied","InvalidOp","ColumnNotExist","NullValue","BadDataType","NextJoinNotExist","TableNotExist","DbNotExist","convertObjectintoLowerCase","obj","keys","n","toLowerCase","isDbExist","dbInfo","callback","errCallBack","UsePromise","Promise","resolve","reject","getDbVersion","dbVersion","Boolean","DbName","Table","Version","Number","getDbSchema","isNull","isNaN","enableLog","WorkerInstance","logging","disableLog","Model","AutoIncrement","PrimaryKey","Unique","NotNull","Default","table","Columns","RequireDelete","RequireCreation","undefined","forEach","item","setRequireDelete","setDbVersion","setPrimaryKey","tableVersion","DataBase","dataBase","Tables","BaseHelper","getTable","CurrentTable","ActiveDataBase","every","getKeyRange","op","KeyRange","bound","Low","High","lowerBound","upperBound","getObjectSecondKey","IsSecond","getPrimaryKey","getKeyPath","sortNumberInAsc","values","sort","a","sortNumberInDesc","sortAlphabetInAsc","localeCompare","sortAlphabetInDesc","getCombination","word","doAndPushCombination","chars","join","ch","charAt","toUpperCase","getAllCombinationOfWord","isArray","i","concat","apply","arguments","SendResultFlag","customError","onTransactionTimeout","onExceptionOccured","info","goToWhereLogic","IgnoreCase","makeQryInCaseSensitive","indexNames","contains","CheckFlag","FilterValue","Like","split","executeLikeLogic","Any","Last","First","executeInLogic","executeWhereLogic","ColumnName","qry","ColumnValue","KeyValue","In","checkForWhereConditionMatch","rowValue","checkIn","Values","checkLike","CompSymbol","CompValue","SymbolIndex","indexOf","lastIndexOf","checkComparisionOp","symbol","CompareValue","CreateDb","DbCreatedList","db","objectStoreNames","deleteObjectStore","dbConnection","Store","autoIncrement","DropDb","deleteDb","DbDropRequest","deleteDatabase","onblocked","InsertHelper","ValuesAffected","onTransactionCompleted","Return","checkModifyInsertValues","ValueIndex","checkDatas","checkInternal","checkAndModifyValue","Index","checkAndModifyColumn","onValidationError","details","CheckNotNullAndDataType","columnValue","Insert","insertDataintoTable","IsReturn","AddResult","Into","SkipDataCheck","BulkInsert","ValuesIndex","bulkinsertData","OpenDb","Clear","ClearRequest","clear","changeLogStatus","openDb","select","insert","dropDb","count","bulkInsert","exportJson","closeDb","Update","Instance","Delete","Select","Join","Count","version","createDbInternal","LastTable","Url","URL","createObjectURL","Blob","JSON","stringify","type","BaseSelect","Sorted","removeDuplicates","Datas","lookupObject","NotWhere","executeWhereUndefinedLogic","Order","By","OrderType","Type","SkipRecord","LimitRecord","RecordSkipped","advance","executeSkipAndLimit","executeSkip","executeSkipAndLimitForIn","Skip","ColumnStore","skipOrPush","executeSkipForIn","executeLimitForIn","executeSimpleForIn","filterOnOccurence","Found","CompValueLength","executeLimit","executeSimple","QueryStack","CurrentQueryStackIndex","splice","executeWhereJoinLogic","joinQuery","Item","JoinIndex","TmpResults","ResultLength","doJoin","startExecutionJoinLogic","value1","value2","itemIndex","j","JoinType","executeRightJoin","ItemIndex","ValueFound","doRightJoin","executeWhereUndefinedLogicForJoin","TableList","convertQueryIntoStack","Table2","NextJoin","Table1","reverse","JoinQuery","GroupByHelper","executeAggregateGroupBy","GrpQry","GroupBy","LookUpObj","AggregateQry","Aggregate","ObjKey","AggrColumn","calculateAggregate","prop","getCount","getMax","getMin","Infinity","getSum","getAvg","Sum","Avg","IsCountTypeString","IsSumTypeString","AvgColumn","processGroupBy","Helper","processOrderBy","OrderColumn","processAggregateQry","Result","Distinct","createtransactionForOrLogic","ontimeout","orQuerySuccess","OrInfo","OnSucess","executeOrLogic","OrQuery","Or","TmpQry","Limit","BaseCount","ResultCount","CountRequest","createTransaction","updateValue","suppliedValue","storedValue","BaseUpdate","InQuery","WhereQry","checkSchema","AllowedProp","executeCheck","BaseDelete","WorkerStatus","CodeExecutionHelper","pushApi","usePromise","FirstRequest","Registered","executeCodeUsingWorker","onWorkerFailed","Failed","createWorker","Worker","ScriptUrl","getScriptUrl","onmessage","onMessageFromWorker","data","fileName","FileName","Scripts","document","getElementsByTagName","url","src","substring","Link","createElement","href","download","click","OnSuccessCallBack","then","catch","terminate"],"mappings":"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"} \ No newline at end of file diff --git a/Dist/Latest/Stable/V 1.3.1/jsstore.d.ts b/Dist/Stable/jsstore.d.ts similarity index 100% rename from Dist/Latest/Stable/V 1.3.1/jsstore.d.ts rename to Dist/Stable/jsstore.d.ts diff --git a/Dist/Latest/Stable/V 1.3.1/jsstore.js b/Dist/Stable/jsstore.js similarity index 100% rename from Dist/Latest/Stable/V 1.3.1/jsstore.js rename to Dist/Stable/jsstore.js diff --git a/Dist/Latest/Stable/V 1.3.1/jsstore.js.map b/Dist/Stable/jsstore.js.map similarity index 100% rename from Dist/Latest/Stable/V 1.3.1/jsstore.js.map rename to Dist/Stable/jsstore.js.map diff --git a/Dist/Latest/Stable/V 1.3.1/jsstore.min.js b/Dist/Stable/jsstore.min.js similarity index 100% rename from Dist/Latest/Stable/V 1.3.1/jsstore.min.js rename to Dist/Stable/jsstore.min.js diff --git a/Dist/Latest/Stable/V 1.3.1/jsstore.min.js.map b/Dist/Stable/jsstore.min.js.map similarity index 100% rename from Dist/Latest/Stable/V 1.3.1/jsstore.min.js.map rename to Dist/Stable/jsstore.min.js.map diff --git a/Dist/V 1.0/V 1.0.0/JsStore-1.0.0.js b/Dist/V 1.0/V 1.0.0/JsStore-1.0.0.js deleted file mode 100644 index 4c2644fa..00000000 --- a/Dist/V 1.0/V 1.0.0/JsStore-1.0.0.js +++ /dev/null @@ -1,3209 +0,0 @@ -/*! JsStore.js - v1.0.0 - 19/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var JsStore; -(function (JsStore) { - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - JsStore.WorkerStatus = WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - console.log("request pushed:" + request.Name); - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - console.log("request executing" + this.RequestQueue[0].Name); - this.IsCodeExecuting = true; - var Request = { - Name: this.RequestQueue[0].Name, - Query: this.RequestQueue[0].Query - }; - if (JsStore.WorkerStatus == WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - console.log("request finished:" + FinishedRequest.Name); - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != WebWorkerStatus.Failed) { - JsStore.WorkerStatus = WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.isDbExist = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Boolean(dbVersion)); - }); - }; - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - JsStore.setDbVersion = function (dbName, version, callback) { - KeyStore.set("JsStore_" + dbName + '_Db_Version', version, callback); - }; - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, logError, errorDetail) { - if (logError === void 0) { logError = false; } - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - if (logError) { - console.error("JsStore Error :- " + Error.Message); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - throw "Column Name is not defined for table:" + tableName; - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : ''; - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion != That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - KeyStore.get('JsStore_' + dbName + '_Db_Version', function (dbVersion) { - dbVersion = dbVersion ? dbVersion : That.Version; - KeyStore.set('JsStore_' + dbName + '_Db_Version', dbVersion); - KeyStore.set("JsStore_" + dbName + "_" + That.Name + "_Version", dbVersion); - }); - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - this.OnError(e.target.error); - } - else { - this.OnError(e); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.isNull = function (value) { - return value == null || value.length == 0; - }; - this.onExceptionOccured = function (ex, info) { - if (ex.name == "NotFoundError") { - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, info); - } - else { - console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - } - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - switch (CompSymbol) { - case JsStore.Occurence.Any: - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - if (SymbolIndex(CompValue) < value.length - 1) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - case '>': - if (value <= CompareValue) { - Status = false; - } - ; - break; - case '<': - if (value >= CompareValue) { - Status = false; - } - ; - break; - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - case '<': - if (value < CompareValue) { - Status = false; - } - ; - break; - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - var CompareValue = rowValue[Column]; - if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) { - Status = false; - } - else { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: false }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - if (column.Unique) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: false }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.IsReturn ? this.ValuesAffected : this.RowAffected); - } - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, checkSchemaInternal = function (value) { - if (value) { - That.checkSchemaAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkSchemaInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - } - }, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - checkSchemaInternal(this.Query.Values[this.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - _this.insertData(); - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - Insert.prototype.checkSchemaAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var CheckNotNullAndDataType = function () { - if (column.NotNull && That.isNull(value[column.Name])) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - if (column.DataType && typeof value[column.Name] != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: Business.ActiveDataBase.Name })); - } - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - console.log('checking connection and executing request:' + request.Name); - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - throw "Value should be array :- supplied value is not array"; - } - else if (query.Values.length > 0) { - new Business.Insert(query, onSuccess, onError); - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.NoValueSupplied, true, null)); - } - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var That = this, createDb = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - KeyStore.get('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version', function (dbVersion) { - new Business.CreateDb(dbVersion, onSuccess, onError); - }); - } - else { - createDb(); - } - }); - }, 200); - }; - createDb(); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.SendResultFlag = true; - _this.Sorted = false; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By }); - return false; - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var RecordSkipped = false, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }; - _this.executeSkip = function () { - var RecordSkipped = false, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }; - _this.executeLimit = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeSimple = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - results.forEach(function (value, index) { - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - doJoin(Item, value, i); - } - }); - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - else if (this.SendResultFlag) { - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - ++That.ResultCount; - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag && this.OnSuccess != null) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - if (ex.name == "NotFoundError") { - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, { TableName: query.From }); - } - else { - console.warn(ex); - } - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Update.BaseUpdate = BaseUpdate; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Update.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var updateValue = function () { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - updateValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - updateValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.In); - var That = _this; - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionTimeout; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - var CurrentTable = this.getTable(tableName), That = this; - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - if (column.NotNull && That.isNull(value)) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - if (column.DataType && typeof value != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - }; - executeCheck(suppliedValue[column.Name]); - return true; - } - } - else { - return false; - } - }); - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - deleteValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName); - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore.js.map \ No newline at end of file diff --git a/Dist/V 1.0/V 1.0.0/JsStore-1.0.0.min.js b/Dist/V 1.0/V 1.0.0/JsStore-1.0.0.min.js deleted file mode 100644 index 651e6944..00000000 --- a/Dist/V 1.0/V 1.0.0/JsStore-1.0.0.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! JsStore.js - v1.0.0 - 19/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){var t;!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(t=e.WebWorkerStatus||(e.WebWorkerStatus={})),e.WorkerStatus=t.NotStarted;var n=function(){function n(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(n){this.RequestQueue.push(n),1==this.RequestQueue.length&&e.WorkerStatus!=t.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var n={Name:this.RequestQueue[0].Name,Query:this.RequestQueue[0].Query};e.WorkerStatus==t.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(e){var t=this.RequestQueue.shift();this.IsCodeExecuting=!1,t&&(e.ErrorOccured?t.OnError&&t.OnError(e.ErrorDetails):t.OnSuccess&&(null!=e.ReturnedValue?t.OnSuccess(e.ReturnedValue):t.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=t.Failed,this.executeCode()},this.createWorker=function(){var n=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){n.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=t.Failed&&(e.WorkerStatus=t.Registered),n.executeCode()},100)):n.onWorkerFailed()}else n.onWorkerFailed()}catch(e){n.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return n.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},n}();e.CodeExecutionHelper=n}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Boolean(e))})},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.setDbVersion=function(e,t,n){KeyStore.set("JsStore_"+e+"_Db_Version",t,n)};!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist"}(e.ErrorType||(e.ErrorType={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}))}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n,r){void 0===n&&(n=!1);var o={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:o.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:o.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:o.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:o.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:o.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:o.Message="No value supplied";break;case e.ErrorType.InvalidOp:o.Message="Invalid Op Value '"+r.Op+"'";break;case e.ErrorType.ColumnNotExist:o.Message="Column '"+r.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:o.Message="Null value is not allowed for column '"+r.ColumnName+"'";break;case e.ErrorType.BadDataType:o.Message="Supplied value for column '"+r.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:o.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:o.Message="Table '"+r.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:o.Message="Database '"+r.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return n&&console.error("JsStore Error :- "+o.Message),o},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,!indexedDB)throw"Your browser doesnot support IndexedDb";self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(e,t){if(null==e.Name)throw"Column Name is not defined for table:"+t;this.Name=e.Name,this.AutoIncrement=null!=e.AutoIncrement&&e.AutoIncrement,this.PrimaryKey=null!=e.PrimaryKey&&e.PrimaryKey,this.Unique=null!=e.Unique&&e.Unique,this.NotNull=null!=e.NotNull&&e.NotNull,this.DataType=null!=e.DataType?e.DataType:"",this.Default=e.Default}}();e.Column=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){function t(t,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=t.Name,this.Version=void 0==t.Version?1:t.Version;var r=this;t.Columns.forEach(function(n){r.Columns.push(new e.Column(n,t.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return t.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},t.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:e!=t.Version&&(t.RequireDelete=!0)})},t.prototype.setDbVersion=function(e){var t=this;KeyStore.get("JsStore_"+e+"_Db_Version",function(n){n=n||t.Version,KeyStore.set("JsStore_"+e+"_Db_Version",n),KeyStore.set("JsStore_"+e+"_"+t.Name+"_Version",n)})},t}();e.Table=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.onErrorOccured=function(e,t){void 0===t&&(t=!1),1==++this.ErrorCount&&null!=this.OnError&&(t?this.OnError(e):this.OnError(e.target.error))},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.isNull=function(e){return null==e||0==e.length},this.onExceptionOccured=function(t,n){"NotFoundError"==t.name?e.Utils.getError(e.ErrorType.TableNotExist,!0,n):console.error(t)},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;var u=t[o];if("string"==typeof s&&s!=u)r=!1;else for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),i=o.indexOf(u.toLowerCase()),s){case e.Occurence.Any:i<0&&(r=!1);break;case e.Occurence.First:(i>0||i<0)&&(r=!1);break;default:i(u)":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":t<=s&&(r=!1);break;case"<":t>=s&&(r=!1);break;case"<=":t>s&&(r=!1);break;case"<":ts.High)&&(r=!1)}}(o,t[o],i)}}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=r&&r(),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},s.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),u(n,e)):e.RequireCreation&&u(n,e)})};var u=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:!1}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){e.Unique?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:!1}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(e,r,o){var s=n.call(this)||this;s.ValuesAffected=[],s.ValuesIndex=0,s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.IsReturn?this.ValuesAffected:this.RowAffected)},s.insertData=function(){var e=this,n=this.Query.Return,r=function(n){n?e.checkSchemaAndModifyValue(n,function(){e.ErrorOccured?e.onErrorOccured(e.Error,!0):r(e.Query.Values[e.ValuesIndex++])}):(e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},o(e.Query.Values[e.ValuesIndex++]))},o=function(t){if(t){var r=e.ObjectStore.add(t);r.onerror=function(t){e.onErrorOccured(t)},r.onsuccess=function(r){n?e.ValuesAffected.push(t):++e.RowAffected,o(e.Query.Values[e.ValuesIndex++])}}};r(this.Query.Values[this.ValuesIndex++])};try{s.Query=e,s.OnSuccess=r,s.OnError=o;s.Table=s.getTable(e.Into),s.insertData()}catch(t){s.onExceptionOccured(t,{TableName:e.Into})}return s}return __extends(r,n),r.prototype.checkSchemaAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(){c.NotNull&&o.isNull(n[c.Name])&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:c.Name})),c.DataType&&typeof n[c.Name]!=c.DataType&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:c.Name})),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),a()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,a()):a()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Aborted"},null!=r&&r()}}else null!=o&&o(e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:t.ActiveDataBase.Name}))}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){t.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){if(!Array.isArray(n.Values))throw"Value should be array :- supplied value is not array";n.Values.length>0?new t.Insert(n,r,o):null!=o&&o(e.Utils.getError(e.ErrorType.NoValueSupplied,!0,null))},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){t.ActiveDataBase=new e.Model.DataBase(n);var s=function(){setTimeout(function(){var e=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version",function(n){n==e.Version?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_Db_Version",function(e){new t.CreateDb(e,r,o)}):s()})},200)};s()},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.SendResultFlag=!0,t.Sorted=!1,t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By){if(!n.ObjectStore.indexNames.contains(this.Query.Order.By))return e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:this.Query.Order.By}),!1;var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.CheckFlag=!1,n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=!1,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;r&&(e&&t.Results.length!=t.LimitRecord?(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&t.Results.push(r.value),r.continue()):(e=!0,r.advance(t.SkipRecord)))}},n.executeSkip=function(){var e=!1,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;r&&(e?(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&t.Results.push(r.value),r.continue()):(e=!0,r.advance(t.SkipRecord)))}},n.executeLimit=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&e.Results.length!=e.LimitRecord&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&(o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess&&this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess&&this.OnSuccess(this.Results)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.SkipRecord=s.Query.Skip,s.LimitRecord=s.Query.Limit;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionCompleted,s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&++o.ResultCount:++o.ResultCount,t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){this.SendResultFlag&&null!=this.OnSuccess&&this.OnSuccess(this.ResultCount)};var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s;try{u.Transaction=t.DbConnection.transaction([r.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.ObjectStore=u.Transaction.objectStore(r.From),void 0!=r.Where?u.executeWhereLogic():u.executeWhereUndefinedLogic()}catch(t){"NotFoundError"==t.name?e.Utils.getError(e.ErrorType.TableNotExist,!0,{TableName:r.From}):console.warn(t)}return u}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseUpdate=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;if(n){for(var r in e.Query.Set)n.value[r]=e.Query.Set[r];n.update(n.value),++e.RowAffected,n.continue()}},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseUpdate);e.NotWhere=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;if(t){if(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)){for(var n in r.Query.Set)t.value[n]=r.Query.Set[n];t.update(t.value),++r.RowAffected}t.continue()}}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;if(t){var n=function(){for(var e in o.Query.Set)t.value[e]=o.Query.Set[e];t.update(t.value),++o.RowAffected};o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue()}},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{u=s;if(s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e,s.OnSuccess=r,s.OnError=o,s.Transaction=t.DbConnection.transaction([e.In],"readwrite"),s.ObjectStore=s.Transaction.objectStore(e.In);var u=s;s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionTimeout,void 0==e.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){var r=this;this.getTable(n).Columns.every(function(n){if(r.ErrorOccured)return!1;if(n.Name in t){return function(t){n.NotNull&&r.isNull(t)&&(r.ErrorOccured=!0,r.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:n.Name})),n.DataType&&typeof t!=n.DataType&&(r.ErrorOccured=!0,r.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:n.Name}))}(t[n.Name]),!0}})},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&(t.delete(),++r.RowAffected),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;if(t){var n=function(){t.delete(),++o.RowAffected};o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue()}},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){u.onTransactionCompleted()},s.Transaction.onerror=function(e){u.onErrorOccured(e)},void 0==n.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB)self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange;else{if(self.alert)throw"Your browser doesnot support IndexedDb";console.log("worked failed"),self.postMessage("message:WorkerFailed")}},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName),setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.0/V 1.0.0/JsStore.d.ts b/Dist/V 1.0/V 1.0.0/JsStore.d.ts deleted file mode 100644 index e06b4b93..00000000 --- a/Dist/V 1.0/V 1.0.0/JsStore.d.ts +++ /dev/null @@ -1,669 +0,0 @@ -/*! JsStore.js - v1.0.0 - 19/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module JsStore { - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -declare module JsStore { - var isDbExist: (dbName: string, callback: Function) => void; - var getDbVersion: (dbName: string, callback: Function) => void; - var setDbVersion: (dbName: string, version: number, callback: Function) => void; - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, logError: boolean, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - static setDbType: () => void; - } -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected isNull: (value: any) => boolean; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - private checkSchemaAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase, Status: JsStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: any, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - SendResultFlag: Boolean; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => boolean; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CheckFlag: boolean; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - class BaseUpdate extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName: any); - createDb(dataBase: Model.IDataBase, onSuccess: Function, onError?: Function): this; - dropDb(onSuccess: Function, onError?: Function): this; - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - count(query: ICount, onSuccess?: Function, onError?: Function): this; - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - static setDbType: () => void; - } -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - var init: () => void; - var get: (key: string, onSuccess: Function, onError?: Function) => any; - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.0/V 1.0.0/JsStore.js.map b/Dist/V 1.0/V 1.0.0/JsStore.js.map deleted file mode 100644 index d34b8222..00000000 --- a/Dist/V 1.0/V 1.0.0/JsStore.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore.js","sourceRoot":"","sources":["../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/DirectCode.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/index.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/UtilsLogic.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../KeyStore/index.ts"],"names":[],"mappings":"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","sourcesContent":["module JsStore {\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n console.log(\"request pushed:\" + request.Name);\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n console.log(\"request executing\" + this.RequestQueue[0].Name)\r\n this.IsCodeExecuting = true;\r\n var Request = {\r\n Name: this.RequestQueue[0].Name,\r\n Query: this.RequestQueue[0].Query\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n console.log(\"request finished:\" + FinishedRequest.Name);\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var isDbExist = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * set Db version\r\n * \r\n * @param {string} dbName \r\n * @param {number} version \r\n * @param {Function} callback \r\n */\r\n export var setDbVersion = function (dbName: string, version: number, callback: Function) {\r\n KeyStore.set(\"JsStore_\" + dbName + '_Db_Version', version, callback);\r\n }\r\n\r\n\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\"\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\"\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n}","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n\r\n","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, logError: boolean = false, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n if (logError) {\r\n console.error(\"JsStore Error :- \" + Error.Message);\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throw \"Column Name is not defined for table:\" + tableName;\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : '';\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n else if (tableVersion != That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n KeyStore.get('JsStore_' + dbName + '_Db_Version', function (dbVersion) {\r\n dbVersion = dbVersion ? dbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', dbVersion);\r\n //setting table version\r\n KeyStore.set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", dbVersion);\r\n\r\n });\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n this.OnError((e as any).target.error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected isNull = function (value) {\r\n return value == null || value.length == 0;\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n if (ex.name == \"NotFoundError\") {\r\n Utils.getError(ErrorType.TableNotExist, true, info);\r\n }\r\n else {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n\r\n\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase())\r\n switch (CompSymbol) {\r\n case Occurence.Any: if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First: if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default: if (SymbolIndex(CompValue) < value.length - 1) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '<': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n }\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n var CompareValue = rowValue[Column];\r\n if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) {\r\n Status = false;\r\n }\r\n else {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n else {\r\n break;\r\n }\r\n\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: false });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.Unique) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n } else {\r\n Store.createIndex(column.Name, column.Name, { unique: false });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.IsReturn ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n checkSchemaInternal = function (value) {\r\n if (value) {\r\n That.checkSchemaAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkSchemaInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n },\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n checkSchemaInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n this.insertData();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the defined schema and based upon that modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkSchemaAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && That.isNull(value[column.Name])) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.DbNotExist, true, { DbName: ActiveDataBase.Name }));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, true, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throw \"Value should be array :- supplied value is not array\";\r\n }\r\n else if (query.Values.length > 0) {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.NoValueSupplied, true, null));\r\n }\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase, onSuccess: Function, onError: Function) {\r\n ActiveDataBase = new Model.DataBase(dataBase); //.create(onSuccess, onError);\r\n var That = this,\r\n createDb = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n KeyStore.get('JsStore_' + ActiveDataBase.Name + '_Db_Version', function (dbVersion) {\r\n new CreateDb(dbVersion, onSuccess, onError)\r\n });\r\n }\r\n else {\r\n createDb();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDb();\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n SendResultFlag: Boolean = true;\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By });\r\n return false;\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CheckFlag = false;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var RecordSkipped = false,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var RecordSkipped = false,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n else if (this.SendResultFlag) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n }\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n ++That.ResultCount;\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag && this.OnSuccess != null) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n \r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n if (ex.name == \"NotFoundError\") {\r\n Utils.getError(ErrorType.TableNotExist, true, { TableName: query.From });\r\n }\r\n else {\r\n console.warn(ex);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class BaseUpdate extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var updateValue = function () {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n updateValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n var That = this;\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionTimeout;\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && That.isNull(value)) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType && typeof value != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n return true;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n deleteValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","\r\n// common files\r\n\r\n/// \r\n/// \r\n\r\n//Model\r\n/// \r\n/// \r\n/// \r\n//Business\r\n\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//select\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//count\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//update\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//delete\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//Instance files\r\n/// \r\n\r\n/// \r\n\r\n/// \r\n\r\n\r\n\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName);\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();","// Common\r\n\r\n/// \r\n/// \r\n/// \r\n\r\n//Business\r\n\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//Instance\r\n\r\n/// \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"]} \ No newline at end of file diff --git a/Dist/V 1.0/V 1.0.1/JsStore-1.0.1.js b/Dist/V 1.0/V 1.0.1/JsStore-1.0.1.js deleted file mode 100644 index 2583e6cd..00000000 --- a/Dist/V 1.0/V 1.0.1/JsStore-1.0.1.js +++ /dev/null @@ -1,3226 +0,0 @@ -/*! JsStore.js - v1.0.1 - 20/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var JsStore; -(function (JsStore) { - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - JsStore.WorkerStatus = WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - if (JsStore.EnableLog) { - console.log("request executing" + this.RequestQueue[0].Name); - } - this.IsCodeExecuting = true; - var Request = { - Name: this.RequestQueue[0].Name, - Query: this.RequestQueue[0].Query - }; - if (JsStore.WorkerStatus == WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished:" + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != WebWorkerStatus.Failed) { - JsStore.WorkerStatus = WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.isDbExist = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Boolean(dbVersion)); - }); - }; - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - JsStore.setDbVersion = function (dbName, version, callback) { - KeyStore.set("JsStore_" + dbName + '_Db_Version', version, callback); - }; - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - JsStore.EnableLog = false; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, logError, errorDetail) { - if (logError === void 0) { logError = false; } - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - if (logError) { - console.error("JsStore Error :- " + Error.Message); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - throw "Column Name is not defined for table:" + tableName; - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : ''; - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion != That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - KeyStore.get('JsStore_' + dbName + '_Db_Version', function (dbVersion) { - dbVersion = dbVersion ? dbVersion : That.Version; - KeyStore.set('JsStore_' + dbName + '_Db_Version', dbVersion); - KeyStore.set("JsStore_" + dbName + "_" + That.Name + "_Version", dbVersion); - }); - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - this.OnError(e.target.error); - } - else { - this.OnError(e); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.isNull = function (value) { - return value == null || value.length == 0; - }; - this.onExceptionOccured = function (ex, info) { - if (ex.name == "NotFoundError") { - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, info); - } - else { - console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - } - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - switch (CompSymbol) { - case JsStore.Occurence.Any: - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - if (SymbolIndex(CompValue) < value.length - 1) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - case '>': - if (value <= CompareValue) { - Status = false; - } - ; - break; - case '<': - if (value >= CompareValue) { - Status = false; - } - ; - break; - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - case '<': - if (value < CompareValue) { - Status = false; - } - ; - break; - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - var CompareValue = rowValue[Column]; - if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) { - Status = false; - } - else { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: false }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - if (column.Unique) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: false }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, checkSchemaInternal = function (value) { - if (value) { - That.checkSchemaAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkSchemaInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - } - }, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - checkSchemaInternal(this.Query.Values[this.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - _this.insertData(); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, false, { TableName: query.Into }); - throw Error; - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - Insert.prototype.checkSchemaAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var CheckNotNullAndDataType = function () { - if (column.NotNull && That.isNull(value[column.Name])) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - if (column.DataType && typeof value[column.Name] != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: Business.ActiveDataBase.Name })); - } - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - throw "Value should be array :- supplied value is not array"; - } - else if (query.Values.length > 0) { - new Business.Insert(query, onSuccess, onError); - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.NoValueSupplied, true, null)); - } - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var That = this, createDb = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - KeyStore.get('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version', function (dbVersion) { - new Business.CreateDb(dbVersion, onSuccess, onError); - }); - } - else { - createDb(); - } - }); - }, 200); - }; - createDb(); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.SendResultFlag = true; - _this.Sorted = false; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By }); - return false; - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var RecordSkipped = false, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }; - _this.executeSkip = function () { - var RecordSkipped = false, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }; - _this.executeLimit = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeSimple = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - results.forEach(function (value, index) { - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - doJoin(Item, value, i); - } - }); - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - else if (this.SendResultFlag) { - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - ++That.ResultCount; - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag && this.OnSuccess != null) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - if (ex.name == "NotFoundError") { - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, { TableName: query.From }); - } - else { - console.warn(ex); - } - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Update.BaseUpdate = BaseUpdate; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Update.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var updateValue = function () { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - updateValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - updateValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.In); - var That = _this; - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionTimeout; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - var CurrentTable = this.getTable(tableName), That = this; - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - if (column.NotNull && That.isNull(value)) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - if (column.DataType && typeof value != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - }; - executeCheck(suppliedValue[column.Name]); - return true; - } - } - else { - return false; - } - }); - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - deleteValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName); - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore.js.map \ No newline at end of file diff --git a/Dist/V 1.0/V 1.0.1/JsStore-1.0.1.min.js b/Dist/V 1.0/V 1.0.1/JsStore-1.0.1.min.js deleted file mode 100644 index 28829ab0..00000000 --- a/Dist/V 1.0/V 1.0.1/JsStore-1.0.1.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! JsStore.js - v1.0.1 - 20/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){var t;!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(t=e.WebWorkerStatus||(e.WebWorkerStatus={})),e.WorkerStatus=t.NotStarted;var n=function(){function n(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(n){this.RequestQueue.push(n),e.EnableLog&&console.log("request pushed:"+n.Name),1==this.RequestQueue.length&&e.WorkerStatus!=t.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){e.EnableLog&&console.log("request executing"+this.RequestQueue[0].Name),this.IsCodeExecuting=!0;var n={Name:this.RequestQueue[0].Name,Query:this.RequestQueue[0].Query};e.WorkerStatus==t.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished:"+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=t.Failed,this.executeCode()},this.createWorker=function(){var n=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){n.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=t.Failed&&(e.WorkerStatus=t.Registered),n.executeCode()},100)):n.onWorkerFailed()}else n.onWorkerFailed()}catch(e){n.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return n.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},n}();e.CodeExecutionHelper=n}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Boolean(e))})},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.setDbVersion=function(e,t,n){KeyStore.set("JsStore_"+e+"_Db_Version",t,n)};!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist"}(e.ErrorType||(e.ErrorType={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={})),e.EnableLog=!1}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n,r){void 0===n&&(n=!1);var o={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:o.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:o.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:o.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:o.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:o.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:o.Message="No value supplied";break;case e.ErrorType.InvalidOp:o.Message="Invalid Op Value '"+r.Op+"'";break;case e.ErrorType.ColumnNotExist:o.Message="Column '"+r.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:o.Message="Null value is not allowed for column '"+r.ColumnName+"'";break;case e.ErrorType.BadDataType:o.Message="Supplied value for column '"+r.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:o.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:o.Message="Table '"+r.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:o.Message="Database '"+r.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return n&&console.error("JsStore Error :- "+o.Message),o},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,!indexedDB)throw"Your browser doesnot support IndexedDb";self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(e,t){if(null==e.Name)throw"Column Name is not defined for table:"+t;this.Name=e.Name,this.AutoIncrement=null!=e.AutoIncrement&&e.AutoIncrement,this.PrimaryKey=null!=e.PrimaryKey&&e.PrimaryKey,this.Unique=null!=e.Unique&&e.Unique,this.NotNull=null!=e.NotNull&&e.NotNull,this.DataType=null!=e.DataType?e.DataType:"",this.Default=e.Default}}();e.Column=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){function t(t,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=t.Name,this.Version=void 0==t.Version?1:t.Version;var r=this;t.Columns.forEach(function(n){r.Columns.push(new e.Column(n,t.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return t.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},t.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:e!=t.Version&&(t.RequireDelete=!0)})},t.prototype.setDbVersion=function(e){var t=this;KeyStore.get("JsStore_"+e+"_Db_Version",function(n){n=n||t.Version,KeyStore.set("JsStore_"+e+"_Db_Version",n),KeyStore.set("JsStore_"+e+"_"+t.Name+"_Version",n)})},t}();e.Table=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.onErrorOccured=function(e,t){void 0===t&&(t=!1),1==++this.ErrorCount&&null!=this.OnError&&(t?this.OnError(e):this.OnError(e.target.error))},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.isNull=function(e){return null==e||0==e.length},this.onExceptionOccured=function(t,n){"NotFoundError"==t.name?e.Utils.getError(e.ErrorType.TableNotExist,!0,n):console.error(t)},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;var u=t[o];if("string"==typeof s&&s!=u)r=!1;else for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),i=o.indexOf(u.toLowerCase()),s){case e.Occurence.Any:i<0&&(r=!1);break;case e.Occurence.First:(i>0||i<0)&&(r=!1);break;default:i(u)":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":t<=s&&(r=!1);break;case"<":t>=s&&(r=!1);break;case"<=":t>s&&(r=!1);break;case"<":ts.High)&&(r=!1)}}(o,t[o],i)}}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=r&&r(),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},s.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),u(n,e)):e.RequireCreation&&u(n,e)})};var u=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:!1}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){e.Unique?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:!1}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.insertData=function(){var e=this,n=this.Query.Return,r=function(n){n?e.checkSchemaAndModifyValue(n,function(){e.ErrorOccured?e.onErrorOccured(e.Error,!0):r(e.Query.Values[e.ValuesIndex++])}):(e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},o(e.Query.Values[e.ValuesIndex++]))},o=function(t){if(t){var r=e.ObjectStore.add(t);r.onerror=function(t){e.onErrorOccured(t)},r.onsuccess=function(r){n?e.ValuesAffected.push(t):++e.RowAffected,o(e.Query.Values[e.ValuesIndex++])}}};r(this.Query.Values[this.ValuesIndex++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(r.Into),!u.Table)throw e.Utils.getError(e.ErrorType.TableNotExist,!1,{TableName:r.Into});u.insertData()}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r.prototype.checkSchemaAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(){c.NotNull&&o.isNull(n[c.Name])&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:c.Name})),c.DataType&&typeof n[c.Name]!=c.DataType&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:c.Name})),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),a()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,a()):a()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Aborted"},null!=r&&r()}}else null!=o&&o(e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:t.ActiveDataBase.Name}))}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){t.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){if(!Array.isArray(n.Values))throw"Value should be array :- supplied value is not array";n.Values.length>0?new t.Insert(n,r,o):null!=o&&o(e.Utils.getError(e.ErrorType.NoValueSupplied,!0,null))},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){t.ActiveDataBase=new e.Model.DataBase(n);var s=function(){setTimeout(function(){var e=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version",function(n){n==e.Version?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_Db_Version",function(e){new t.CreateDb(e,r,o)}):s()})},200)};s()},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.SendResultFlag=!0,t.Sorted=!1,t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By){if(!n.ObjectStore.indexNames.contains(this.Query.Order.By))return e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:this.Query.Order.By}),!1;var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.CheckFlag=!1,n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=!1,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;r&&(e&&t.Results.length!=t.LimitRecord?(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&t.Results.push(r.value),r.continue()):(e=!0,r.advance(t.SkipRecord)))}},n.executeSkip=function(){var e=!1,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;r&&(e?(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&t.Results.push(r.value),r.continue()):(e=!0,r.advance(t.SkipRecord)))}},n.executeLimit=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&e.Results.length!=e.LimitRecord&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&(o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess&&this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess&&this.OnSuccess(this.Results)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.SkipRecord=s.Query.Skip,s.LimitRecord=s.Query.Limit;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionCompleted,s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&++o.ResultCount:++o.ResultCount,t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){this.SendResultFlag&&null!=this.OnSuccess&&this.OnSuccess(this.ResultCount)};var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s;try{u.Transaction=t.DbConnection.transaction([r.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.ObjectStore=u.Transaction.objectStore(r.From),void 0!=r.Where?u.executeWhereLogic():u.executeWhereUndefinedLogic()}catch(t){"NotFoundError"==t.name?e.Utils.getError(e.ErrorType.TableNotExist,!0,{TableName:r.From}):console.warn(t)}return u}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseUpdate=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;if(n){for(var r in e.Query.Set)n.value[r]=e.Query.Set[r];n.update(n.value),++e.RowAffected,n.continue()}},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseUpdate);e.NotWhere=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;if(t){if(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)){for(var n in r.Query.Set)t.value[n]=r.Query.Set[n];t.update(t.value),++r.RowAffected}t.continue()}}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;if(t){var n=function(){for(var e in o.Query.Set)t.value[e]=o.Query.Set[e];t.update(t.value),++o.RowAffected};o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue()}},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{u=s;if(s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e,s.OnSuccess=r,s.OnError=o,s.Transaction=t.DbConnection.transaction([e.In],"readwrite"),s.ObjectStore=s.Transaction.objectStore(e.In);var u=s;s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionTimeout,void 0==e.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){var r=this;this.getTable(n).Columns.every(function(n){if(r.ErrorOccured)return!1;if(n.Name in t){return function(t){n.NotNull&&r.isNull(t)&&(r.ErrorOccured=!0,r.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:n.Name})),n.DataType&&typeof t!=n.DataType&&(r.ErrorOccured=!0,r.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:n.Name}))}(t[n.Name]),!0}})},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&(t.delete(),++r.RowAffected),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;if(t){var n=function(){t.delete(),++o.RowAffected};o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue()}},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){u.onTransactionCompleted()},s.Transaction.onerror=function(e){u.onErrorOccured(e)},void 0==n.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB)self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange;else{if(self.alert)throw"Your browser doesnot support IndexedDb";console.log("worked failed"),self.postMessage("message:WorkerFailed")}},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName),setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.0/V 1.0.1/JsStore.d.ts b/Dist/V 1.0/V 1.0.1/JsStore.d.ts deleted file mode 100644 index 859316f2..00000000 --- a/Dist/V 1.0/V 1.0.1/JsStore.d.ts +++ /dev/null @@ -1,671 +0,0 @@ -/*! JsStore.js - v1.0.1 - 20/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module JsStore { - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -declare module JsStore { - var isDbExist: (dbName: string, callback: Function) => void; - var getDbVersion: (dbName: string, callback: Function) => void; - var setDbVersion: (dbName: string, version: number, callback: Function) => void; - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - var EnableLog: boolean; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, logError: boolean, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - static setDbType: () => void; - } -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected isNull: (value: any) => boolean; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - private checkSchemaAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase, Status: JsStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: any, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - SendResultFlag: Boolean; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => boolean; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CheckFlag: boolean; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - class BaseUpdate extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName: any); - createDb(dataBase: Model.IDataBase, onSuccess: Function, onError?: Function): this; - dropDb(onSuccess: Function, onError?: Function): this; - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - count(query: ICount, onSuccess?: Function, onError?: Function): this; - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - static setDbType: () => void; - } -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - var init: () => void; - var get: (key: string, onSuccess: Function, onError?: Function) => any; - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.0/V 1.0.1/JsStore.js.map b/Dist/V 1.0/V 1.0.1/JsStore.js.map deleted file mode 100644 index 273282a4..00000000 --- a/Dist/V 1.0/V 1.0.1/JsStore.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore.js","sourceRoot":"","sources":["../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/DirectCode.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/index.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/UtilsLogic.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../KeyStore/index.ts"],"names":[],"mappings":"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","sourcesContent":["module JsStore {\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n if (EnableLog) {\r\n console.log(\"request executing\" + this.RequestQueue[0].Name)\r\n }\r\n this.IsCodeExecuting = true;\r\n var Request = {\r\n Name: this.RequestQueue[0].Name,\r\n Query: this.RequestQueue[0].Query\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished:\" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var isDbExist = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * set Db version\r\n * \r\n * @param {string} dbName \r\n * @param {number} version \r\n * @param {Function} callback \r\n */\r\n export var setDbVersion = function (dbName: string, version: number, callback: Function) {\r\n KeyStore.set(\"JsStore_\" + dbName + '_Db_Version', version, callback);\r\n }\r\n\r\n\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\"\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\"\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export var EnableLog = false;\r\n}","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n\r\n","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, logError: boolean = false, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n if (logError) {\r\n console.error(\"JsStore Error :- \" + Error.Message);\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throw \"Column Name is not defined for table:\" + tableName;\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : '';\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n else if (tableVersion != That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n KeyStore.get('JsStore_' + dbName + '_Db_Version', function (dbVersion) {\r\n dbVersion = dbVersion ? dbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', dbVersion);\r\n //setting table version\r\n KeyStore.set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", dbVersion);\r\n\r\n });\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n this.OnError((e as any).target.error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected isNull = function (value) {\r\n return value == null || value.length == 0;\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n if (ex.name == \"NotFoundError\") {\r\n Utils.getError(ErrorType.TableNotExist, true, info);\r\n }\r\n else {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n\r\n\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase())\r\n switch (CompSymbol) {\r\n case Occurence.Any: if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First: if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default: if (SymbolIndex(CompValue) < value.length - 1) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '<': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n }\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n var CompareValue = rowValue[Column];\r\n if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) {\r\n Status = false;\r\n }\r\n else {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n else {\r\n break;\r\n }\r\n\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: false });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.Unique) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n } else {\r\n Store.createIndex(column.Name, column.Name, { unique: false });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n checkSchemaInternal = function (value) {\r\n if (value) {\r\n That.checkSchemaAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkSchemaInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n },\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n checkSchemaInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.insertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, false, { TableName: query.Into })\r\n throw Error;\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the defined schema and based upon that modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkSchemaAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && That.isNull(value[column.Name])) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.DbNotExist, true, { DbName: ActiveDataBase.Name }));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, true, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throw \"Value should be array :- supplied value is not array\";\r\n }\r\n else if (query.Values.length > 0) {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.NoValueSupplied, true, null));\r\n }\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase, onSuccess: Function, onError: Function) {\r\n ActiveDataBase = new Model.DataBase(dataBase); //.create(onSuccess, onError);\r\n var That = this,\r\n createDb = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n KeyStore.get('JsStore_' + ActiveDataBase.Name + '_Db_Version', function (dbVersion) {\r\n new CreateDb(dbVersion, onSuccess, onError)\r\n });\r\n }\r\n else {\r\n createDb();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDb();\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n SendResultFlag: Boolean = true;\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By });\r\n return false;\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CheckFlag = false;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var RecordSkipped = false,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var RecordSkipped = false,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n else if (this.SendResultFlag) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n }\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n ++That.ResultCount;\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag && this.OnSuccess != null) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n \r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n if (ex.name == \"NotFoundError\") {\r\n Utils.getError(ErrorType.TableNotExist, true, { TableName: query.From });\r\n }\r\n else {\r\n console.warn(ex);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class BaseUpdate extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var updateValue = function () {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n updateValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n var That = this;\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionTimeout;\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && That.isNull(value)) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType && typeof value != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n return true;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n deleteValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","\r\n// common files\r\n\r\n/// \r\n/// \r\n\r\n//Model\r\n/// \r\n/// \r\n/// \r\n//Business\r\n\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//select\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//count\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//update\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//delete\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//Instance files\r\n/// \r\n\r\n/// \r\n\r\n/// \r\n\r\n\r\n\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName);\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();","// Common\r\n\r\n/// \r\n/// \r\n/// \r\n\r\n//Business\r\n\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//Instance\r\n\r\n/// \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"]} \ No newline at end of file diff --git a/Dist/V 1.0/V 1.0.2/JsStore-1.0.2.js b/Dist/V 1.0/V 1.0.2/JsStore-1.0.2.js deleted file mode 100644 index febf4d9f..00000000 --- a/Dist/V 1.0/V 1.0.2/JsStore-1.0.2.js +++ /dev/null @@ -1,3232 +0,0 @@ -/*! JsStore.js - v1.0.2 - 21/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var JsStore; -(function (JsStore) { - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - JsStore.WorkerStatus = WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - if (JsStore.EnableLog) { - console.log("request executing" + this.RequestQueue[0].Name); - } - this.IsCodeExecuting = true; - var Request = { - Name: this.RequestQueue[0].Name, - Query: this.RequestQueue[0].Query - }; - if (JsStore.WorkerStatus == WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished:" + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != WebWorkerStatus.Failed) { - JsStore.WorkerStatus = WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.isDbExist = function (dbInfo, callback) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - }; - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - JsStore.EnableLog = false; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, logError, errorDetail) { - if (logError === void 0) { logError = false; } - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - if (logError) { - console.error("JsStore Error :- " + Error.Message); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - throw "Column Name is not defined for table:" + tableName; - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : ''; - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion != That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion ? (JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version) : That.Version; - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - this.OnError(e.target.error); - } - else { - this.OnError(e); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.isNull = function (value) { - return value == null || value.length == 0; - }; - this.onExceptionOccured = function (ex, info) { - if (ex.name == "NotFoundError") { - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, info); - } - else { - console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - } - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - switch (CompSymbol) { - case JsStore.Occurence.Any: - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - if (SymbolIndex(CompValue) < value.length - 1) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - case '>': - if (CompareValue <= value) { - Status = false; - } - ; - break; - case '<': - if (CompareValue >= value) { - Status = false; - } - ; - break; - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - var CompareValue = rowValue[Column]; - if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) { - Status = false; - } - else { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: false }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - if (column.Unique) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: false }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, checkSchemaInternal = function (value) { - if (value) { - That.checkSchemaAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkSchemaInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - } - }, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - checkSchemaInternal(this.Query.Values[this.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - _this.insertData(); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, false, { TableName: query.Into }); - throw Error; - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - Insert.prototype.checkSchemaAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var CheckNotNullAndDataType = function () { - if (column.NotNull && That.isNull(value[column.Name])) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - if (column.DataType && typeof value[column.Name] != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: Business.ActiveDataBase.Name })); - } - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - throw "Value should be array :- supplied value is not array"; - } - else if (query.Values.length > 0) { - new Business.Insert(query, onSuccess, onError); - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.NoValueSupplied, true, null)); - } - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.SendResultFlag = true; - _this.Sorted = false; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By }); - return false; - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var RecordSkipped = false, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }; - _this.executeSkip = function () { - var RecordSkipped = false, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }; - _this.executeLimit = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeSimple = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - results.forEach(function (value, index) { - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - doJoin(Item, value, i); - } - }); - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - else if (this.SendResultFlag) { - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - ++That.ResultCount; - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag && this.OnSuccess != null) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - if (ex.name == "NotFoundError") { - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, { TableName: query.From }); - } - else { - console.warn(ex); - } - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Update.BaseUpdate = BaseUpdate; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Update.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var updateValue = function () { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - updateValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - updateValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.In); - var That = _this; - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionTimeout; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - var CurrentTable = this.getTable(tableName), That = this; - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - if (column.NotNull && That.isNull(value)) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - if (column.DataType && typeof value != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - }; - executeCheck(suppliedValue[column.Name]); - return true; - } - } - else { - return false; - } - }); - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - deleteValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName); - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore.js.map \ No newline at end of file diff --git a/Dist/V 1.0/V 1.0.2/JsStore-1.0.2.min.js b/Dist/V 1.0/V 1.0.2/JsStore-1.0.2.min.js deleted file mode 100644 index 73cfdbb5..00000000 --- a/Dist/V 1.0/V 1.0.2/JsStore-1.0.2.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! JsStore.js - v1.0.2 - 21/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){var t;!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(t=e.WebWorkerStatus||(e.WebWorkerStatus={})),e.WorkerStatus=t.NotStarted;var n=function(){function n(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(n){this.RequestQueue.push(n),e.EnableLog&&console.log("request pushed:"+n.Name),1==this.RequestQueue.length&&e.WorkerStatus!=t.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){e.EnableLog&&console.log("request executing"+this.RequestQueue[0].Name),this.IsCodeExecuting=!0;var n={Name:this.RequestQueue[0].Name,Query:this.RequestQueue[0].Query};e.WorkerStatus==t.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished:"+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=t.Failed,this.executeCode()},this.createWorker=function(){var n=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){n.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=t.Failed&&(e.WorkerStatus=t.Registered),n.executeCode()},100)):n.onWorkerFailed()}else n.onWorkerFailed()}catch(e){n.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return n.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},n}();e.CodeExecutionHelper=n}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})};!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist"}(e.ErrorType||(e.ErrorType={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={})),e.EnableLog=!1}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n,r){void 0===n&&(n=!1);var o={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:o.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:o.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:o.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:o.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:o.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:o.Message="No value supplied";break;case e.ErrorType.InvalidOp:o.Message="Invalid Op Value '"+r.Op+"'";break;case e.ErrorType.ColumnNotExist:o.Message="Column '"+r.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:o.Message="Null value is not allowed for column '"+r.ColumnName+"'";break;case e.ErrorType.BadDataType:o.Message="Supplied value for column '"+r.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:o.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:o.Message="Table '"+r.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:o.Message="Database '"+r.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return n&&console.error("JsStore Error :- "+o.Message),o},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,!indexedDB)throw"Your browser doesnot support IndexedDb";self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(e,t){if(null==e.Name)throw"Column Name is not defined for table:"+t;this.Name=e.Name,this.AutoIncrement=null!=e.AutoIncrement&&e.AutoIncrement,this.PrimaryKey=null!=e.PrimaryKey&&e.PrimaryKey,this.Unique=null!=e.Unique&&e.Unique,this.NotNull=null!=e.NotNull&&e.NotNull,this.DataType=null!=e.DataType?e.DataType:"",this.Default=e.Default}}();e.Column=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:e!=t.Version&&(t.RequireDelete=!0)})},n.prototype.setDbVersion=function(t){var n=this;e.DbVersion=e.DbVersion&&e.DbVersion>n.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.onErrorOccured=function(e,t){void 0===t&&(t=!1),1==++this.ErrorCount&&null!=this.OnError&&(t?this.OnError(e):this.OnError(e.target.error))},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.isNull=function(e){return null==e||0==e.length},this.onExceptionOccured=function(t,n){"NotFoundError"==t.name?e.Utils.getError(e.ErrorType.TableNotExist,!0,n):console.error(t)},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;var u=t[o];if("string"==typeof s&&s!=u)r=!1;else for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),i=o.indexOf(u.toLowerCase()),s){case e.Occurence.Any:i<0&&(r=!1);break;case e.Occurence.First:(i>0||i<0)&&(r=!1);break;default:i(u)":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":s<=t&&(r=!1);break;case"<":s>=t&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],i)}}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=r&&r(),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},s.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),u(n,e)):e.RequireCreation&&u(n,e)})};var u=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:!1}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){e.Unique?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:!1}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.insertData=function(){var e=this,n=this.Query.Return,r=function(n){n?e.checkSchemaAndModifyValue(n,function(){e.ErrorOccured?e.onErrorOccured(e.Error,!0):r(e.Query.Values[e.ValuesIndex++])}):(e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},o(e.Query.Values[e.ValuesIndex++]))},o=function(t){if(t){var r=e.ObjectStore.add(t);r.onerror=function(t){e.onErrorOccured(t)},r.onsuccess=function(r){n?e.ValuesAffected.push(t):++e.RowAffected,o(e.Query.Values[e.ValuesIndex++])}}};r(this.Query.Values[this.ValuesIndex++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(r.Into),!u.Table)throw e.Utils.getError(e.ErrorType.TableNotExist,!1,{TableName:r.Into});u.insertData()}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r.prototype.checkSchemaAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(){c.NotNull&&o.isNull(n[c.Name])&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:c.Name})),c.DataType&&typeof n[c.Name]!=c.DataType&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:c.Name})),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),a()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,a()):a()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Aborted"},null!=r&&r()}}else null!=o&&o(e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:t.ActiveDataBase.Name}))}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){t.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){if(!Array.isArray(n.Values))throw"Value should be array :- supplied value is not array";n.Values.length>0?new t.Insert(n,r,o):null!=o&&o(e.Utils.getError(e.ErrorType.NoValueSupplied,!0,null))},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.SendResultFlag=!0,t.Sorted=!1,t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By){if(!n.ObjectStore.indexNames.contains(this.Query.Order.By))return e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:this.Query.Order.By}),!1;var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.CheckFlag=!1,n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=!1,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;r&&(e&&t.Results.length!=t.LimitRecord?(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&t.Results.push(r.value),r.continue()):(e=!0,r.advance(t.SkipRecord)))}},n.executeSkip=function(){var e=!1,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;r&&(e?(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&t.Results.push(r.value),r.continue()):(e=!0,r.advance(t.SkipRecord)))}},n.executeLimit=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&e.Results.length!=e.LimitRecord&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&(o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess&&this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess&&this.OnSuccess(this.Results)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.SkipRecord=s.Query.Skip,s.LimitRecord=s.Query.Limit;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionCompleted,s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&++o.ResultCount:++o.ResultCount,t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){this.SendResultFlag&&null!=this.OnSuccess&&this.OnSuccess(this.ResultCount)};var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s;try{u.Transaction=t.DbConnection.transaction([r.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.ObjectStore=u.Transaction.objectStore(r.From),void 0!=r.Where?u.executeWhereLogic():u.executeWhereUndefinedLogic()}catch(t){"NotFoundError"==t.name?e.Utils.getError(e.ErrorType.TableNotExist,!0,{TableName:r.From}):console.warn(t)}return u}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseUpdate=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;if(n){for(var r in e.Query.Set)n.value[r]=e.Query.Set[r];n.update(n.value),++e.RowAffected,n.continue()}},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseUpdate);e.NotWhere=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;if(t){if(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)){for(var n in r.Query.Set)t.value[n]=r.Query.Set[n];t.update(t.value),++r.RowAffected}t.continue()}}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;if(t){var n=function(){for(var e in o.Query.Set)t.value[e]=o.Query.Set[e];t.update(t.value),++o.RowAffected};o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue()}},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{u=s;if(s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e,s.OnSuccess=r,s.OnError=o,s.Transaction=t.DbConnection.transaction([e.In],"readwrite"),s.ObjectStore=s.Transaction.objectStore(e.In);var u=s;s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionTimeout,void 0==e.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){var r=this;this.getTable(n).Columns.every(function(n){if(r.ErrorOccured)return!1;if(n.Name in t){return function(t){n.NotNull&&r.isNull(t)&&(r.ErrorOccured=!0,r.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:n.Name})),n.DataType&&typeof t!=n.DataType&&(r.ErrorOccured=!0,r.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:n.Name}))}(t[n.Name]),!0}})},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&(t.delete(),++r.RowAffected),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;if(t){var n=function(){t.delete(),++o.RowAffected};o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue()}},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){u.onTransactionCompleted()},s.Transaction.onerror=function(e){u.onErrorOccured(e)},void 0==n.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB)self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange;else{if(self.alert)throw"Your browser doesnot support IndexedDb";console.log("worked failed"),self.postMessage("message:WorkerFailed")}},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName),setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.0/V 1.0.2/JsStore.d.ts b/Dist/V 1.0/V 1.0.2/JsStore.d.ts deleted file mode 100644 index c47a6939..00000000 --- a/Dist/V 1.0/V 1.0.2/JsStore.d.ts +++ /dev/null @@ -1,677 +0,0 @@ -/*! JsStore.js - v1.0.2 - 21/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module JsStore { - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -declare module JsStore { - var isDbExist: (dbInfo: DbInfo, callback: Function) => void; - var getDbVersion: (dbName: string, callback: Function) => void; - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - var EnableLog: boolean, DbVersion: any; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, logError: boolean, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - static setDbType: () => void; - } -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected isNull: (value: any) => boolean; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - private checkSchemaAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase, Status: JsStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - SendResultFlag: Boolean; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => boolean; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CheckFlag: boolean; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - class BaseUpdate extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName: any); - createDb(dataBase: Model.IDataBase, onSuccess: Function, onError?: Function): this; - dropDb(onSuccess: Function, onError?: Function): this; - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - count(query: ICount, onSuccess?: Function, onError?: Function): this; - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - static setDbType: () => void; - } -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - var init: () => void; - var get: (key: string, onSuccess: Function, onError?: Function) => any; - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.0/V 1.0.2/JsStore.js.map b/Dist/V 1.0/V 1.0.2/JsStore.js.map deleted file mode 100644 index c0b9118e..00000000 --- a/Dist/V 1.0/V 1.0.2/JsStore.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore.js","sourceRoot":"","sources":["../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/DirectCode.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/index.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/UtilsLogic.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../KeyStore/index.ts"],"names":[],"mappings":"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","sourcesContent":["module JsStore {\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n if (EnableLog) {\r\n console.log(\"request executing\" + this.RequestQueue[0].Name)\r\n }\r\n this.IsCodeExecuting = true;\r\n var Request = {\r\n Name: this.RequestQueue[0].Name,\r\n Query: this.RequestQueue[0].Query\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished:\" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\"\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\"\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export var EnableLog = false,\r\n DbVersion;\r\n}","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n\r\n","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, logError: boolean = false, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n if (logError) {\r\n console.error(\"JsStore Error :- \" + Error.Message);\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throw \"Column Name is not defined for table:\" + tableName;\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : '';\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n else if (tableVersion != That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion ? (DbVersion > That.Version ? DbVersion : That.Version) : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n this.OnError((e as any).target.error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected isNull = function (value) {\r\n return value == null || value.length == 0;\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n if (ex.name == \"NotFoundError\") {\r\n Utils.getError(ErrorType.TableNotExist, true, info);\r\n }\r\n else {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n\r\n\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase())\r\n switch (CompSymbol) {\r\n case Occurence.Any: if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First: if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default: if (SymbolIndex(CompValue) < value.length - 1) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (CompareValue <= value) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (CompareValue >= value) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n }\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n var CompareValue = rowValue[Column];\r\n if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) {\r\n Status = false;\r\n }\r\n else {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n else {\r\n break;\r\n }\r\n\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: false });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.Unique) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n } else {\r\n Store.createIndex(column.Name, column.Name, { unique: false });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n checkSchemaInternal = function (value) {\r\n if (value) {\r\n That.checkSchemaAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkSchemaInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n },\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n checkSchemaInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.insertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, false, { TableName: query.Into })\r\n throw Error;\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the defined schema and based upon that modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkSchemaAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && That.isNull(value[column.Name])) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.DbNotExist, true, { DbName: ActiveDataBase.Name }));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, true, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throw \"Value should be array :- supplied value is not array\";\r\n }\r\n else if (query.Values.length > 0) {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.NoValueSupplied, true, null));\r\n }\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n SendResultFlag: Boolean = true;\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By });\r\n return false;\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CheckFlag = false;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var RecordSkipped = false,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var RecordSkipped = false,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n else if (this.SendResultFlag) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n }\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n ++That.ResultCount;\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag && this.OnSuccess != null) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n \r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n if (ex.name == \"NotFoundError\") {\r\n Utils.getError(ErrorType.TableNotExist, true, { TableName: query.From });\r\n }\r\n else {\r\n console.warn(ex);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class BaseUpdate extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var updateValue = function () {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n updateValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n var That = this;\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionTimeout;\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && That.isNull(value)) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType && typeof value != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n return true;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n deleteValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","\r\n// common files\r\n\r\n/// \r\n/// \r\n\r\n//Model\r\n/// \r\n/// \r\n/// \r\n//Business\r\n\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//select\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//count\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//update\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//delete\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//Instance files\r\n/// \r\n\r\n/// \r\n\r\n/// \r\n\r\n\r\n\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName);\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();","// Common\r\n\r\n/// \r\n/// \r\n/// \r\n\r\n//Business\r\n\r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n//Instance\r\n\r\n/// \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"]} \ No newline at end of file diff --git a/Dist/V 1.0/V 1.0.3/JsStore-1.0.3.js b/Dist/V 1.0/V 1.0.3/JsStore-1.0.3.js deleted file mode 100644 index 70105643..00000000 --- a/Dist/V 1.0/V 1.0.3/JsStore-1.0.3.js +++ /dev/null @@ -1,3401 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.0.3 - 23/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.isDbExist = function (dbInfo, callback) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - JsStore.EnableLog = false; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, logError, errorDetail) { - if (logError === void 0) { logError = false; } - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - if (logError) { - console.error("JsStore Error :- " + Error.Message); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - throw "Column Name is not defined for table:" + tableName; - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : ''; - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion != That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion ? (JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version) : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - this.OnError(e.target.error); - } - else { - this.OnError(e); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.isNull = function (value) { - return value == null || value.length == 0; - }; - this.onExceptionOccured = function (ex, info) { - if (ex.name == "NotFoundError") { - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, info); - } - else { - console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - switch (CompSymbol) { - case JsStore.Occurence.Any: - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - if (SymbolIndex(CompValue) < value.length - 1) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (CompareValue <= value) { - Status = false; - } - ; - break; - //less than - case '<': - if (CompareValue >= value) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - var CompareValue = rowValue[Column]; - if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) { - Status = false; - } - else { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: false }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - if (column.Unique) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: false }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, checkSchemaInternal = function (value) { - if (value) { - That.checkSchemaAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkSchemaInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - } - }, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - checkSchemaInternal(this.Query.Values[this.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - _this.insertData(); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, false, { TableName: query.Into }); - throw Error; - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the defined schema and based upon that modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkSchemaAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && That.isNull(value[column.Name])) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType && typeof value[column.Name] != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: Business.ActiveDataBase.Name })); - } - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - throw "Value should be array :- supplied value is not array"; - } - else if (query.Values.length > 0) { - new Business.Insert(query, onSuccess, onError); - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.NoValueSupplied, true, null)); - } - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.SendResultFlag = true; - _this.Sorted = false; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By }); - return false; - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var RecordSkipped = false, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }; - _this.executeSkip = function () { - var RecordSkipped = false, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }; - _this.executeLimit = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeSimple = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - else if (this.SendResultFlag) { - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - ++That.ResultCount; - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag && this.OnSuccess != null) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - if (ex.name == "NotFoundError") { - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, { TableName: query.From }); - } - else { - console.warn(ex); - } - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Update.BaseUpdate = BaseUpdate; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Update.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var updateValue = function () { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - updateValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - updateValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.In); - var That = _this; - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionTimeout; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - var CurrentTable = this.getTable(tableName), That = this; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && That.isNull(value)) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType && typeof value != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - }; - executeCheck(suppliedValue[column.Name]); - return true; - } - } - else { - return false; - } - }); - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - deleteValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - JsStore.WorkerStatus = WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - if (JsStore.EnableLog) { - console.log("request executing" + this.RequestQueue[0].Name); - } - this.IsCodeExecuting = true; - var Request = { - Name: this.RequestQueue[0].Name, - Query: this.RequestQueue[0].Query - }; - if (JsStore.WorkerStatus == WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished:" + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != WebWorkerStatus.Failed) { - JsStore.WorkerStatus = WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName); - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore.js.map \ No newline at end of file diff --git a/Dist/V 1.0/V 1.0.3/JsStore-1.0.3.min.js b/Dist/V 1.0/V 1.0.3/JsStore-1.0.3.min.js deleted file mode 100644 index fea334f6..00000000 --- a/Dist/V 1.0/V 1.0.3/JsStore-1.0.3.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.0.3 - 23/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){e.isDbExist=function(t,n){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})};!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist"}(e.ErrorType||(e.ErrorType={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={})),e.EnableLog=!1}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n,r){void 0===n&&(n=!1);var o={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:o.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:o.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:o.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:o.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:o.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:o.Message="No value supplied";break;case e.ErrorType.InvalidOp:o.Message="Invalid Op Value '"+r.Op+"'";break;case e.ErrorType.ColumnNotExist:o.Message="Column '"+r.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:o.Message="Null value is not allowed for column '"+r.ColumnName+"'";break;case e.ErrorType.BadDataType:o.Message="Supplied value for column '"+r.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:o.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:o.Message="Table '"+r.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:o.Message="Database '"+r.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return n&&console.error("JsStore Error :- "+o.Message),o},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,!indexedDB)throw"Your browser doesnot support IndexedDb";self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(e,t){if(null==e.Name)throw"Column Name is not defined for table:"+t;this.Name=e.Name,this.AutoIncrement=null!=e.AutoIncrement&&e.AutoIncrement,this.PrimaryKey=null!=e.PrimaryKey&&e.PrimaryKey,this.Unique=null!=e.Unique&&e.Unique,this.NotNull=null!=e.NotNull&&e.NotNull,this.DataType=null!=e.DataType?e.DataType:"",this.Default=e.Default}}();e.Column=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:e!=t.Version&&(t.RequireDelete=!0)})},n.prototype.setDbVersion=function(t){var n=this;e.DbVersion=e.DbVersion&&e.DbVersion>n.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.onErrorOccured=function(e,t){void 0===t&&(t=!1),1==++this.ErrorCount&&null!=this.OnError&&(t?this.OnError(e):this.OnError(e.target.error))},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.isNull=function(e){return null==e||0==e.length},this.onExceptionOccured=function(t,n){"NotFoundError"==t.name?e.Utils.getError(e.ErrorType.TableNotExist,!0,n):console.error(t)},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;var u=t[o];if("string"==typeof s&&s!=u)r=!1;else for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),i=o.indexOf(u.toLowerCase()),s){case e.Occurence.Any:i<0&&(r=!1);break;case e.Occurence.First:(i>0||i<0)&&(r=!1);break;default:i(u)":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":s<=t&&(r=!1);break;case"<":s>=t&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],i)}}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=r&&r(),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},s.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),u(n,e)):e.RequireCreation&&u(n,e)})};var u=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:!1}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){e.Unique?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:!1}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.insertData=function(){var e=this,n=this.Query.Return,r=function(n){n?e.checkSchemaAndModifyValue(n,function(){e.ErrorOccured?e.onErrorOccured(e.Error,!0):r(e.Query.Values[e.ValuesIndex++])}):(e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},o(e.Query.Values[e.ValuesIndex++]))},o=function(t){if(t){var r=e.ObjectStore.add(t);r.onerror=function(t){e.onErrorOccured(t)},r.onsuccess=function(r){n?e.ValuesAffected.push(t):++e.RowAffected,o(e.Query.Values[e.ValuesIndex++])}}};r(this.Query.Values[this.ValuesIndex++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(r.Into),!u.Table)throw e.Utils.getError(e.ErrorType.TableNotExist,!1,{TableName:r.Into});u.insertData()}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r.prototype.checkSchemaAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(){c.NotNull&&o.isNull(n[c.Name])&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:c.Name})),c.DataType&&typeof n[c.Name]!=c.DataType&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:c.Name})),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),a()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,a()):a()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Aborted"},null!=r&&r()}}else null!=o&&o(e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:t.ActiveDataBase.Name}))}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){t.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){if(!Array.isArray(n.Values))throw"Value should be array :- supplied value is not array";n.Values.length>0?new t.Insert(n,r,o):null!=o&&o(e.Utils.getError(e.ErrorType.NoValueSupplied,!0,null))},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.SendResultFlag=!0,t.Sorted=!1,t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By){if(!n.ObjectStore.indexNames.contains(this.Query.Order.By))return e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:this.Query.Order.By}),!1;var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.CheckFlag=!1,n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=!1,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;r&&(e&&t.Results.length!=t.LimitRecord?(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&t.Results.push(r.value),r.continue()):(e=!0,r.advance(t.SkipRecord)))}},n.executeSkip=function(){var e=!1,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;r&&(e?(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&t.Results.push(r.value),r.continue()):(e=!0,r.advance(t.SkipRecord)))}},n.executeLimit=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&e.Results.length!=e.LimitRecord&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&(o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess&&this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess&&this.OnSuccess(this.Results)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.SkipRecord=s.Query.Skip,s.LimitRecord=s.Query.Limit;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionCompleted,s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&++o.ResultCount:++o.ResultCount,t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){this.SendResultFlag&&null!=this.OnSuccess&&this.OnSuccess(this.ResultCount)};var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s;try{u.Transaction=t.DbConnection.transaction([r.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.ObjectStore=u.Transaction.objectStore(r.From),void 0!=r.Where?u.executeWhereLogic():u.executeWhereUndefinedLogic()}catch(t){"NotFoundError"==t.name?e.Utils.getError(e.ErrorType.TableNotExist,!0,{TableName:r.From}):console.warn(t)}return u}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseUpdate=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;if(n){for(var r in e.Query.Set)n.value[r]=e.Query.Set[r];n.update(n.value),++e.RowAffected,n.continue()}},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseUpdate);e.NotWhere=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;if(t){if(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)){for(var n in r.Query.Set)t.value[n]=r.Query.Set[n];t.update(t.value),++r.RowAffected}t.continue()}}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;if(t){var n=function(){for(var e in o.Query.Set)t.value[e]=o.Query.Set[e];t.update(t.value),++o.RowAffected};o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue()}},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{u=s;if(s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e,s.OnSuccess=r,s.OnError=o,s.Transaction=t.DbConnection.transaction([e.In],"readwrite"),s.ObjectStore=s.Transaction.objectStore(e.In);var u=s;s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionTimeout,void 0==e.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){var r=this;this.getTable(n).Columns.every(function(n){if(r.ErrorOccured)return!1;if(n.Name in t){return function(t){n.NotNull&&r.isNull(t)&&(r.ErrorOccured=!0,r.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:n.Name})),n.DataType&&typeof t!=n.DataType&&(r.ErrorOccured=!0,r.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:n.Name}))}(t[n.Name]),!0}})},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&(t.delete(),++r.RowAffected),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;if(t){var n=function(){t.delete(),++o.RowAffected};o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue()}},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){u.onTransactionCompleted()},s.Transaction.onerror=function(e){u.onErrorOccured(e)},void 0==n.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){var t;!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(t=e.WebWorkerStatus||(e.WebWorkerStatus={})),e.WorkerStatus=t.NotStarted;var n=function(){function n(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(n){this.RequestQueue.push(n),e.EnableLog&&console.log("request pushed:"+n.Name),1==this.RequestQueue.length&&e.WorkerStatus!=t.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){e.EnableLog&&console.log("request executing"+this.RequestQueue[0].Name),this.IsCodeExecuting=!0;var n={Name:this.RequestQueue[0].Name,Query:this.RequestQueue[0].Query};e.WorkerStatus==t.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished:"+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=t.Failed,this.executeCode()},this.createWorker=function(){var n=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){n.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=t.Failed&&(e.WorkerStatus=t.Registered),n.executeCode()},100)):n.onWorkerFailed()}else n.onWorkerFailed()}catch(e){n.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return n.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},n}();e.CodeExecutionHelper=n}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB)self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange;else{if(self.alert)throw"Your browser doesnot support IndexedDb";console.log("worked failed"),self.postMessage("message:WorkerFailed")}},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName),setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.0/V 1.0.3/JsStore.d.ts b/Dist/V 1.0/V 1.0.3/JsStore.d.ts deleted file mode 100644 index 52812dca..00000000 --- a/Dist/V 1.0/V 1.0.3/JsStore.d.ts +++ /dev/null @@ -1,812 +0,0 @@ -/** JsStore.js - v1.0.3 - 23/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {string} dbName - * @param {Function} callback - */ - var isDbExist: (dbInfo: DbInfo, callback: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - var EnableLog: boolean, DbVersion: any; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, logError: boolean, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected isNull: (value: any) => boolean; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the defined schema and based upon that modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkSchemaAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase, Status: JsStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - SendResultFlag: Boolean; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => boolean; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CheckFlag: boolean; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - class BaseUpdate extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName: any); - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - createDb(dataBase: Model.IDataBase, onSuccess: Function, onError?: Function): this; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb(onSuccess: Function, onError?: Function): this; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count(query: ICount, onSuccess?: Function, onError?: Function): this; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.0/V 1.0.3/JsStore.js.map b/Dist/V 1.0/V 1.0.3/JsStore.js.map deleted file mode 100644 index d556fe62..00000000 --- a/Dist/V 1.0/V 1.0.3/JsStore.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore.js","sourceRoot":"","sources":["../License.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.0.3 - 23/8/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\"\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\"\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export var EnableLog = false,\r\n DbVersion;\r\n}","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, logError: boolean = false, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n if (logError) {\r\n console.error(\"JsStore Error :- \" + Error.Message);\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throw \"Column Name is not defined for table:\" + tableName;\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : '';\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n else if (tableVersion != That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion ? (DbVersion > That.Version ? DbVersion : That.Version) : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n this.OnError((e as any).target.error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected isNull = function (value) {\r\n return value == null || value.length == 0;\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n if (ex.name == \"NotFoundError\") {\r\n Utils.getError(ErrorType.TableNotExist, true, info);\r\n }\r\n else {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n\r\n\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase())\r\n switch (CompSymbol) {\r\n case Occurence.Any: if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First: if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default: if (SymbolIndex(CompValue) < value.length - 1) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (CompareValue <= value) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (CompareValue >= value) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n }\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n var CompareValue = rowValue[Column];\r\n if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) {\r\n Status = false;\r\n }\r\n else {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n else {\r\n break;\r\n }\r\n\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: false });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.Unique) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n } else {\r\n Store.createIndex(column.Name, column.Name, { unique: false });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n checkSchemaInternal = function (value) {\r\n if (value) {\r\n That.checkSchemaAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkSchemaInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n },\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n checkSchemaInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.insertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, false, { TableName: query.Into })\r\n throw Error;\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the defined schema and based upon that modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkSchemaAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && That.isNull(value[column.Name])) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.DbNotExist, true, { DbName: ActiveDataBase.Name }));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, true, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throw \"Value should be array :- supplied value is not array\";\r\n }\r\n else if (query.Values.length > 0) {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.NoValueSupplied, true, null));\r\n }\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n SendResultFlag: Boolean = true;\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By });\r\n return false;\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CheckFlag = false;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var RecordSkipped = false,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var RecordSkipped = false,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n else if (this.SendResultFlag) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n }\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n ++That.ResultCount;\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag && this.OnSuccess != null) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n \r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n if (ex.name == \"NotFoundError\") {\r\n Utils.getError(ErrorType.TableNotExist, true, { TableName: query.From });\r\n }\r\n else {\r\n console.warn(ex);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class BaseUpdate extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var updateValue = function () {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n updateValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n var That = this;\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionTimeout;\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && That.isNull(value)) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType && typeof value != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n return true;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n deleteValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n if (EnableLog) {\r\n console.log(\"request executing\" + this.RequestQueue[0].Name)\r\n }\r\n this.IsCodeExecuting = true;\r\n var Request = {\r\n Name: this.RequestQueue[0].Name,\r\n Query: this.RequestQueue[0].Query\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished:\" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n\r\n","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName);\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();"]} \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.0/JsStore-1.1.0.d.ts b/Dist/V 1.1/V 1.1.0/JsStore-1.1.0.d.ts deleted file mode 100644 index 61cca252..00000000 --- a/Dist/V 1.1/V 1.1.0/JsStore-1.1.0.d.ts +++ /dev/null @@ -1,809 +0,0 @@ -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {string} dbName - * @param {Function} callback - */ - var isDbExist: (dbInfo: DbInfo, callback: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - var EnableLog: boolean, DbVersion: any; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, logError: boolean, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected isNull: (value: any) => boolean; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the defined schema and based upon that modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkSchemaAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase, Status: JsStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - SendResultFlag: Boolean; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => boolean; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CheckFlag: boolean; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - class BaseUpdate extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName: any); - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - createDb(dataBase: Model.IDataBase, onSuccess: Function, onError?: Function): this; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb(onSuccess: Function, onError?: Function): this; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count(query: ICount, onSuccess?: Function, onError?: Function): this; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.1/V 1.1.0/JsStore-1.1.0.js b/Dist/V 1.1/V 1.1.0/JsStore-1.1.0.js deleted file mode 100644 index 43bfee34..00000000 --- a/Dist/V 1.1/V 1.1.0/JsStore-1.1.0.js +++ /dev/null @@ -1,3398 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.1.0 - 25/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.isDbExist = function (dbInfo, callback) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - JsStore.EnableLog = false; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, logError, errorDetail) { - if (logError === void 0) { logError = false; } - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - if (logError) { - console.error("JsStore Error :- " + Error.Message); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - throw "Column Name is not defined for table:" + tableName; - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : ''; - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion != That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion ? (JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version) : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - this.OnError(e.target.error); - } - else { - this.OnError(e); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.isNull = function (value) { - return value == null || value.length == 0; - }; - this.onExceptionOccured = function (ex, info) { - if (ex.name == "NotFoundError") { - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, info); - } - else { - console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - switch (CompSymbol) { - case JsStore.Occurence.Any: - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - if (SymbolIndex(CompValue) < value.length - 1) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (CompareValue <= value) { - Status = false; - } - ; - break; - //less than - case '<': - if (CompareValue >= value) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - var CompareValue = rowValue[Column]; - if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) { - Status = false; - } - else { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: false }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - if (column.Unique) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: false }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, checkSchemaInternal = function (value) { - if (value) { - That.checkSchemaAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkSchemaInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - } - }, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - checkSchemaInternal(this.Query.Values[this.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - _this.insertData(); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, false, { TableName: query.Into }); - throw Error; - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the defined schema and based upon that modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkSchemaAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && That.isNull(value[column.Name])) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: Business.ActiveDataBase.Name })); - } - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - throw "Value should be array :- supplied value is not array"; - } - else if (query.Values.length > 0) { - new Business.Insert(query, onSuccess, onError); - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.NoValueSupplied, true, null)); - } - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.SendResultFlag = true; - _this.Sorted = false; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By }); - return false; - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - } - Cursor.continue(); - } - }; - }; - _this.executeSkip = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - } - Cursor.continue(); - } - }; - }; - _this.executeLimit = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeSimple = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - else if (this.SendResultFlag) { - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - ++That.ResultCount; - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag && this.OnSuccess != null) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - if (ex.name == "NotFoundError") { - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, { TableName: query.From }); - } - else { - console.warn(ex); - } - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Update.BaseUpdate = BaseUpdate; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Update.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var updateValue = function () { - for (var key in That.Query.Set) { - Cursor.value[key] = That.Query.Set[key]; - } - Cursor.update(Cursor.value); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - updateValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - updateValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.In); - var That = _this; - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionTimeout; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - var CurrentTable = this.getTable(tableName), That = this; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && That.isNull(value)) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType && typeof value != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - }; - executeCheck(suppliedValue[column.Name]); - return true; - } - } - else { - return false; - } - }); - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - deleteValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - JsStore.WorkerStatus = WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - if (JsStore.EnableLog) { - console.log("request executing" + this.RequestQueue[0].Name); - } - this.IsCodeExecuting = true; - var Request = { - Name: this.RequestQueue[0].Name, - Query: this.RequestQueue[0].Query - }; - if (JsStore.WorkerStatus == WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished:" + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != WebWorkerStatus.Failed) { - JsStore.WorkerStatus = WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName); - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore-1.1.0.js.map \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.0/JsStore-1.1.0.js.map b/Dist/V 1.1/V 1.1.0/JsStore-1.1.0.js.map deleted file mode 100644 index 71edd08e..00000000 --- a/Dist/V 1.1/V 1.1.0/JsStore-1.1.0.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.1.0.js","sourceRoot":"","sources":["../License.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.1.0 - 25/8/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\"\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\"\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export var EnableLog = false,\r\n DbVersion;\r\n}","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, logError: boolean = false, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n if (logError) {\r\n console.error(\"JsStore Error :- \" + Error.Message);\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throw \"Column Name is not defined for table:\" + tableName;\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : '';\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n else if (tableVersion != That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion ? (DbVersion > That.Version ? DbVersion : That.Version) : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n this.OnError((e as any).target.error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected isNull = function (value) {\r\n return value == null || value.length == 0;\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n if (ex.name == \"NotFoundError\") {\r\n Utils.getError(ErrorType.TableNotExist, true, info);\r\n }\r\n else {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n\r\n\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase())\r\n switch (CompSymbol) {\r\n case Occurence.Any: if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First: if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default: if (SymbolIndex(CompValue) < value.length - 1) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (CompareValue <= value) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (CompareValue >= value) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n }\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n var CompareValue = rowValue[Column];\r\n if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) {\r\n Status = false;\r\n }\r\n else {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n else {\r\n break;\r\n }\r\n\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: false });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.Unique) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n } else {\r\n Store.createIndex(column.Name, column.Name, { unique: false });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n checkSchemaInternal = function (value) {\r\n if (value) {\r\n That.checkSchemaAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkSchemaInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n },\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n checkSchemaInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.insertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, false, { TableName: query.Into })\r\n throw Error;\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the defined schema and based upon that modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkSchemaAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && That.isNull(value[column.Name])) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.DbNotExist, true, { DbName: ActiveDataBase.Name }));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, true, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throw \"Value should be array :- supplied value is not array\";\r\n }\r\n else if (query.Values.length > 0) {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.NoValueSupplied, true, null));\r\n }\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n SendResultFlag: Boolean = true;\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By });\r\n return false;\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CheckFlag = false;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n else if (this.SendResultFlag) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n }\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n ++That.ResultCount;\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag && this.OnSuccess != null) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n \r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n if (ex.name == \"NotFoundError\") {\r\n Utils.getError(ErrorType.TableNotExist, true, { TableName: query.From });\r\n }\r\n else {\r\n console.warn(ex);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class BaseUpdate extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var updateValue = function () {\r\n for (var key in That.Query.Set) {\r\n Cursor.value[key] = That.Query.Set[key];\r\n }\r\n Cursor.update(Cursor.value);\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n updateValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n var That = this;\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionTimeout;\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && That.isNull(value)) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType && typeof value != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n return true;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n deleteValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n if (EnableLog) {\r\n console.log(\"request executing\" + this.RequestQueue[0].Name)\r\n }\r\n this.IsCodeExecuting = true;\r\n var Request = {\r\n Name: this.RequestQueue[0].Name,\r\n Query: this.RequestQueue[0].Query\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished:\" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n\r\n","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName);\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();"]} \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.0/JsStore-1.1.0.min.js b/Dist/V 1.1/V 1.1.0/JsStore-1.1.0.min.js deleted file mode 100644 index 27293446..00000000 --- a/Dist/V 1.1/V 1.1.0/JsStore-1.1.0.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.1.0 - 25/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){e.isDbExist=function(t,n){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})};!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist"}(e.ErrorType||(e.ErrorType={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={})),e.EnableLog=!1}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n,r){void 0===n&&(n=!1);var o={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:o.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:o.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:o.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:o.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:o.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:o.Message="No value supplied";break;case e.ErrorType.InvalidOp:o.Message="Invalid Op Value '"+r.Op+"'";break;case e.ErrorType.ColumnNotExist:o.Message="Column '"+r.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:o.Message="Null value is not allowed for column '"+r.ColumnName+"'";break;case e.ErrorType.BadDataType:o.Message="Supplied value for column '"+r.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:o.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:o.Message="Table '"+r.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:o.Message="Database '"+r.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return n&&console.error("JsStore Error :- "+o.Message),o},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,!indexedDB)throw"Your browser doesnot support IndexedDb";self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(e,t){if(null==e.Name)throw"Column Name is not defined for table:"+t;this.Name=e.Name,this.AutoIncrement=null!=e.AutoIncrement&&e.AutoIncrement,this.PrimaryKey=null!=e.PrimaryKey&&e.PrimaryKey,this.Unique=null!=e.Unique&&e.Unique,this.NotNull=null!=e.NotNull&&e.NotNull,this.DataType=null!=e.DataType?e.DataType:"",this.Default=e.Default}}();e.Column=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:e!=t.Version&&(t.RequireDelete=!0)})},n.prototype.setDbVersion=function(t){var n=this;e.DbVersion=e.DbVersion&&e.DbVersion>n.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.onErrorOccured=function(e,t){void 0===t&&(t=!1),1==++this.ErrorCount&&null!=this.OnError&&(t?this.OnError(e):this.OnError(e.target.error))},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.isNull=function(e){return null==e||0==e.length},this.onExceptionOccured=function(t,n){"NotFoundError"==t.name?e.Utils.getError(e.ErrorType.TableNotExist,!0,n):console.error(t)},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;var u=t[o];if("string"==typeof s&&s!=u)r=!1;else for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),i=o.indexOf(u.toLowerCase()),s){case e.Occurence.Any:i<0&&(r=!1);break;case e.Occurence.First:(i>0||i<0)&&(r=!1);break;default:i(u)":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":s<=t&&(r=!1);break;case"<":s>=t&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],i)}}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=r&&r(),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},s.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),u(n,e)):e.RequireCreation&&u(n,e)})};var u=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:!1}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){e.Unique?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:!1}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.insertData=function(){var e=this,n=this.Query.Return,r=function(n){n?e.checkSchemaAndModifyValue(n,function(){e.ErrorOccured?e.onErrorOccured(e.Error,!0):r(e.Query.Values[e.ValuesIndex++])}):(e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},o(e.Query.Values[e.ValuesIndex++]))},o=function(t){if(t){var r=e.ObjectStore.add(t);r.onerror=function(t){e.onErrorOccured(t)},r.onsuccess=function(r){n?e.ValuesAffected.push(t):++e.RowAffected,o(e.Query.Values[e.ValuesIndex++])}}};r(this.Query.Values[this.ValuesIndex++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(r.Into),!u.Table)throw e.Utils.getError(e.ErrorType.TableNotExist,!1,{TableName:r.Into});u.insertData()}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r.prototype.checkSchemaAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(){c.NotNull&&o.isNull(n[c.Name])?(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:c.Name})):c.DataType&&typeof n[c.Name]!=c.DataType&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:c.Name})),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),a()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,a()):a()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Aborted"},null!=r&&r()}}else null!=o&&o(e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:t.ActiveDataBase.Name}))}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){t.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){if(!Array.isArray(n.Values))throw"Value should be array :- supplied value is not array";n.Values.length>0?new t.Insert(n,r,o):null!=o&&o(e.Utils.getError(e.ErrorType.NoValueSupplied,!0,null))},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.SendResultFlag=!0,t.Sorted=!1,t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By){if(!n.ObjectStore.indexNames.contains(this.Query.Order.By))return e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:this.Query.Order.By}),!1;var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.CheckFlag=!1,n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;t.Results.length!=t.LimitRecord&&r&&(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&(0==e?t.Results.push(r.value):--e),r.continue())}},n.executeSkip=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;r&&(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&(0==e?t.Results.push(r.value):--e),r.continue())}},n.executeLimit=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&(o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess&&this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess&&this.OnSuccess(this.Results)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.SkipRecord=s.Query.Skip,s.LimitRecord=s.Query.Limit;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionCompleted,s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&++o.ResultCount:++o.ResultCount,t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){this.SendResultFlag&&null!=this.OnSuccess&&this.OnSuccess(this.ResultCount)};var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s;try{u.Transaction=t.DbConnection.transaction([r.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.ObjectStore=u.Transaction.objectStore(r.From),void 0!=r.Where?u.executeWhereLogic():u.executeWhereUndefinedLogic()}catch(t){"NotFoundError"==t.name?e.Utils.getError(e.ErrorType.TableNotExist,!0,{TableName:r.From}):console.warn(t)}return u}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseUpdate=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;if(n){for(var r in e.Query.Set)n.value[r]=e.Query.Set[r];n.update(n.value),++e.RowAffected,n.continue()}},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseUpdate);e.NotWhere=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;if(t){if(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)){for(var n in r.Query.Set)t.value[n]=r.Query.Set[n];t.update(t.value),++r.RowAffected}t.continue()}}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;if(t){var n=function(){for(var e in o.Query.Set)t.value[e]=o.Query.Set[e];t.update(t.value),++o.RowAffected};o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue()}},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{u=s;if(s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e,s.OnSuccess=r,s.OnError=o,s.Transaction=t.DbConnection.transaction([e.In],"readwrite"),s.ObjectStore=s.Transaction.objectStore(e.In);var u=s;s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionTimeout,void 0==e.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){var r=this;this.getTable(n).Columns.every(function(n){if(r.ErrorOccured)return!1;if(n.Name in t){return function(t){n.NotNull&&r.isNull(t)&&(r.ErrorOccured=!0,r.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:n.Name})),n.DataType&&typeof t!=n.DataType&&(r.ErrorOccured=!0,r.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:n.Name}))}(t[n.Name]),!0}})},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&(t.delete(),++r.RowAffected),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;if(t){var n=function(){t.delete(),++o.RowAffected};o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue()}},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){u.onTransactionCompleted()},s.Transaction.onerror=function(e){u.onErrorOccured(e)},void 0==n.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){var t;!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(t=e.WebWorkerStatus||(e.WebWorkerStatus={})),e.WorkerStatus=t.NotStarted;var n=function(){function n(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(n){this.RequestQueue.push(n),e.EnableLog&&console.log("request pushed:"+n.Name),1==this.RequestQueue.length&&e.WorkerStatus!=t.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){e.EnableLog&&console.log("request executing"+this.RequestQueue[0].Name),this.IsCodeExecuting=!0;var n={Name:this.RequestQueue[0].Name,Query:this.RequestQueue[0].Query};e.WorkerStatus==t.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished:"+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=t.Failed,this.executeCode()},this.createWorker=function(){var n=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){n.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=t.Failed&&(e.WorkerStatus=t.Registered),n.executeCode()},100)):n.onWorkerFailed()}else n.onWorkerFailed()}catch(e){n.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return n.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},n}();e.CodeExecutionHelper=n}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB)self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange;else{if(self.alert)throw"Your browser doesnot support IndexedDb";console.log("worked failed"),self.postMessage("message:WorkerFailed")}},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName),setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.1/JsStore-1.1.1.d.ts b/Dist/V 1.1/V 1.1.1/JsStore-1.1.1.d.ts deleted file mode 100644 index 3901f115..00000000 --- a/Dist/V 1.1/V 1.1.1/JsStore-1.1.1.d.ts +++ /dev/null @@ -1,835 +0,0 @@ -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - var EnableLog: boolean, DbVersion: number; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, logError: boolean, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {string} dbName - * @param {Function} callback - */ - var isDbExist: (dbInfo: DbInfo, callback: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the defined schema and based upon that modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkSchemaAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase, Status: JsStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - SendResultFlag: Boolean; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => boolean; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CheckFlag: boolean; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName: any); - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - createDb(dataBase: Model.IDataBase, onSuccess: Function, onError?: Function): this; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb(onSuccess: Function, onError?: Function): this; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count(query: ICount, onSuccess?: Function, onError?: Function): this; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.1/V 1.1.1/JsStore-1.1.1.js b/Dist/V 1.1/V 1.1.1/JsStore-1.1.1.js deleted file mode 100644 index 815452f2..00000000 --- a/Dist/V 1.1/V 1.1.1/JsStore-1.1.1.js +++ /dev/null @@ -1,3468 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.1.1 - 29/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - JsStore.EnableLog = false; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, logError, errorDetail) { - if (logError === void 0) { logError = false; } - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - if (logError) { - console.error("JsStore Error :- " + Error.Message); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.isDbExist = function (dbInfo, callback) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - throw "Column Name is not defined for table:" + tableName; - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : ''; - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion != That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion ? (JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version) : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, info); - break; - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - switch (CompSymbol) { - case JsStore.Occurence.Any: - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - if (SymbolIndex(CompValue) < value.length - 1) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (CompareValue <= value) { - Status = false; - } - ; - break; - //less than - case '<': - if (CompareValue >= value) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - var CompareValue = rowValue[Column]; - if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) { - Status = false; - } - else { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, checkSchemaInternal = function (value) { - if (value) { - That.checkSchemaAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkSchemaInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - } - }, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - checkSchemaInternal(this.Query.Values[this.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - _this.insertData(); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, false, { TableName: query.Into }); - throw Error; - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the defined schema and based upon that modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkSchemaAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(value[column.Name])) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: Business.ActiveDataBase.Name })); - } - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - throw "Value should be array :- supplied value is not array"; - } - else if (query.Values.length > 0) { - new Business.Insert(query, onSuccess, onError); - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.NoValueSupplied, true, null)); - } - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.SendResultFlag = true; - _this.Sorted = false; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By }); - return false; - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - } - Cursor.continue(); - } - }; - }; - _this.executeSkip = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - } - Cursor.continue(); - } - }; - }; - _this.executeLimit = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeSimple = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - else if (this.SendResultFlag) { - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - ++That.ResultCount; - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag && this.OnSuccess != null) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - if (ex.name == "NotFoundError") { - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, { TableName: query.From }); - } - else { - console.warn(ex); - } - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - for (var op in suppliedValue[key]) { - switch (op) { - case '0': - storedValue[key] = suppliedValue[key]; - break; - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var updateValueInternal = function () { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - updateValueInternal(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - updateValueInternal(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.In); - var That = _this; - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionTimeout; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType && typeof value != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - }; - executeCheck(suppliedValue[column.Name]); - return true; - } - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, false, { TableName: tableName }); - throw Error; - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - deleteValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - JsStore.WorkerStatus = WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - if (JsStore.EnableLog) { - console.log("request executing" + this.RequestQueue[0].Name); - } - this.IsCodeExecuting = true; - var Request = { - Name: this.RequestQueue[0].Name, - Query: this.RequestQueue[0].Query - }; - if (JsStore.WorkerStatus == WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished:" + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != WebWorkerStatus.Failed) { - JsStore.WorkerStatus = WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName); - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore-1.1.1.js.map \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.1/JsStore-1.1.1.js.map b/Dist/V 1.1/V 1.1.1/JsStore-1.1.1.js.map deleted file mode 100644 index 232be11d..00000000 --- a/Dist/V 1.1/V 1.1.1/JsStore-1.1.1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.1.1.js","sourceRoot":"","sources":["../License.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/HelperLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.1.1 - 29/8/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\"\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\"\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export var EnableLog = false,\r\n DbVersion: number;\r\n}","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, logError: boolean = false, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n if (logError) {\r\n console.error(\"JsStore Error :- \" + Error.Message);\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throw \"Column Name is not defined for table:\" + tableName;\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : '';\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n else if (tableVersion != That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion ? (DbVersion > That.Version ? DbVersion : That.Version) : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n Utils.getError(ErrorType.TableNotExist, true, info); break;\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n\r\n\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase())\r\n switch (CompSymbol) {\r\n case Occurence.Any: if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First: if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default: if (SymbolIndex(CompValue) < value.length - 1) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (CompareValue <= value) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (CompareValue >= value) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n }\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n var CompareValue = rowValue[Column];\r\n if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) {\r\n Status = false;\r\n }\r\n else {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n else {\r\n break;\r\n }\r\n\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n checkSchemaInternal = function (value) {\r\n if (value) {\r\n That.checkSchemaAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkSchemaInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n },\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n checkSchemaInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.insertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, false, { TableName: query.Into })\r\n throw Error;\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the defined schema and based upon that modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkSchemaAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.DbNotExist, true, { DbName: ActiveDataBase.Name }));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, true, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throw \"Value should be array :- supplied value is not array\";\r\n }\r\n else if (query.Values.length > 0) {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.NoValueSupplied, true, null));\r\n }\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n SendResultFlag: Boolean = true;\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By });\r\n return false;\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CheckFlag = false;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n else if (this.SendResultFlag) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n }\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n ++That.ResultCount;\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag && this.OnSuccess != null) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n \r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n if (ex.name == \"NotFoundError\") {\r\n Utils.getError(ErrorType.TableNotExist, true, { TableName: query.From });\r\n }\r\n else {\r\n console.warn(ex);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '0': storedValue[key] = suppliedValue[key]; break;\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var updateValueInternal = function () {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n updateValueInternal();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n var That = this;\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionTimeout;\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType && typeof value != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n return true;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, false, { TableName: tableName });\r\n throw Error;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n deleteValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n if (EnableLog) {\r\n console.log(\"request executing\" + this.RequestQueue[0].Name)\r\n }\r\n this.IsCodeExecuting = true;\r\n var Request = {\r\n Name: this.RequestQueue[0].Name,\r\n Query: this.RequestQueue[0].Query\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished:\" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n\r\n","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName);\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();"]} \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.1/JsStore-1.1.1.min.js b/Dist/V 1.1/V 1.1.1/JsStore-1.1.1.min.js deleted file mode 100644 index 83379594..00000000 --- a/Dist/V 1.1/V 1.1.1/JsStore-1.1.1.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.1.1 - 29/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist"}(e.ErrorType||(e.ErrorType={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={})),e.EnableLog=!1}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n,r){void 0===n&&(n=!1);var o={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:o.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:o.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:o.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:o.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:o.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:o.Message="No value supplied";break;case e.ErrorType.InvalidOp:o.Message="Invalid Op Value '"+r.Op+"'";break;case e.ErrorType.ColumnNotExist:o.Message="Column '"+r.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:o.Message="Null value is not allowed for column '"+r.ColumnName+"'";break;case e.ErrorType.BadDataType:o.Message="Supplied value for column '"+r.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:o.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:o.Message="Table '"+r.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:o.Message="Database '"+r.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return n&&console.error("JsStore Error :- "+o.Message),o},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,!indexedDB)throw"Your browser doesnot support IndexedDb";self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0},e.disableLog=function(){e.EnableLog=!1}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(e,t){if(null==e.Name)throw"Column Name is not defined for table:"+t;this.Name=e.Name,this.AutoIncrement=null!=e.AutoIncrement&&e.AutoIncrement,this.PrimaryKey=null!=e.PrimaryKey&&e.PrimaryKey,this.Unique=null!=e.Unique&&e.Unique,this.NotNull=null!=e.NotNull&&e.NotNull,this.DataType=null!=e.DataType?e.DataType:"",this.Default=e.Default}}();e.Column=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:e!=t.Version&&(t.RequireDelete=!0)})},n.prototype.setDbVersion=function(t){var n=this;e.DbVersion=e.DbVersion&&e.DbVersion>n.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.onErrorOccured=function(t,n){if(void 0===n&&(n=!1),1==++this.ErrorCount&&null!=this.OnError){if(n)this.OnError(t);else{var r={Name:t.target.error.name,Message:t.target.error.message};this.OnError(r)}e.EnableLog&&console.error(r)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,n){switch(t.name){case"NotFoundError":e.Utils.getError(e.ErrorType.TableNotExist,!0,n);break;default:console.error(t)}},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;var u=t[o];if("string"==typeof s&&s!=u)r=!1;else for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),i=o.indexOf(u.toLowerCase()),s){case e.Occurence.Any:i<0&&(r=!1);break;case e.Occurence.First:(i>0||i<0)&&(r=!1);break;default:i(u)":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":s<=t&&(r=!1);break;case"<":s>=t&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],i)}}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=r&&r(),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},s.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),u(n,e)):e.RequireCreation&&u(n,e)})};var u=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.insertData=function(){var e=this,n=this.Query.Return,r=function(n){n?e.checkSchemaAndModifyValue(n,function(){e.ErrorOccured?e.onErrorOccured(e.Error,!0):r(e.Query.Values[e.ValuesIndex++])}):(e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},o(e.Query.Values[e.ValuesIndex++]))},o=function(t){if(t){var r=e.ObjectStore.add(t);r.onerror=function(t){e.onErrorOccured(t)},r.onsuccess=function(r){n?e.ValuesAffected.push(t):++e.RowAffected,o(e.Query.Values[e.ValuesIndex++])}}};r(this.Query.Values[this.ValuesIndex++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(r.Into),!u.Table)throw e.Utils.getError(e.ErrorType.TableNotExist,!1,{TableName:r.Into});u.insertData()}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r.prototype.checkSchemaAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(){c.NotNull&&e.isNull(n[c.Name])?(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:c.Name})):c.DataType&&typeof n[c.Name]!=c.DataType&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:c.Name})),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),a()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,a()):a()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Aborted"},null!=r&&r()}}else null!=o&&o(e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:t.ActiveDataBase.Name}))}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){t.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){if(!Array.isArray(n.Values))throw"Value should be array :- supplied value is not array";n.Values.length>0?new t.Insert(n,r,o):null!=o&&o(e.Utils.getError(e.ErrorType.NoValueSupplied,!0,null))},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.SendResultFlag=!0,t.Sorted=!1,t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By){if(!n.ObjectStore.indexNames.contains(this.Query.Order.By))return e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:this.Query.Order.By}),!1;var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.CheckFlag=!1,n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;t.Results.length!=t.LimitRecord&&r&&(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&(0==e?t.Results.push(r.value):--e),r.continue())}},n.executeSkip=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;r&&(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&(0==e?t.Results.push(r.value):--e),r.continue())}},n.executeLimit=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&(o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess&&this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess&&this.OnSuccess(this.Results)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.SkipRecord=s.Query.Skip,s.LimitRecord=s.Query.Limit;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionCompleted,s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&++o.ResultCount:++o.ResultCount,t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){this.SendResultFlag&&null!=this.OnSuccess&&this.OnSuccess(this.ResultCount)};var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s;try{u.Transaction=t.DbConnection.transaction([r.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.ObjectStore=u.Transaction.objectStore(r.From),void 0!=r.Where?u.executeWhereLogic():u.executeWhereUndefinedLogic()}catch(t){"NotFoundError"==t.name?e.Utils.getError(e.ErrorType.TableNotExist,!0,{TableName:r.From}):console.warn(t)}return u}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)for(var r in e[n]){switch(r){case"0":t[n]=e[n];break;case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){var r=n.target.result;r&&(r.update(t.updateValue(e.Query.Set,r.value)),++e.RowAffected,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o=this;this.CompValue=n.toLowerCase(),this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var n=e.target.result;n&&(o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&(n.update(t.updateValue(o.Query.Set,n.value)),++o.RowAffected),n.continue())}},r}return __extends(r,n),r}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.executeRequest=function(e,n,r){var o,s=this;n=r?n[r]:n,(o=this.ObjectStore.index(e).openCursor(this.getKeyRange(n,r))).onsuccess=function(e){var n=e.target.result;if(n){var r=function(){n.update(t.updateValue(s.Query.Set,n.value)),++s.RowAffected};s.CheckFlag?s.checkForWhereConditionMatch(n.value)&&r():r(),n.continue()}},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},r.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},r}return __extends(r,n),r}(t.Like);t.Where=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{u=s;if(s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e,s.OnSuccess=r,s.OnError=o,s.Transaction=t.DbConnection.transaction([e.In],"readwrite"),s.ObjectStore=s.Transaction.objectStore(e.In);var u=s;s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionTimeout,void 0==e.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){var r=this.getTable(n),o=this;if(!r)throw e.Utils.getError(e.ErrorType.TableNotExist,!1,{TableName:n});r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){return function(t){n.NotNull&&e.isNull(t)&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:n.Name})),n.DataType&&typeof t!=n.DataType&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:n.Name}))}(t[n.Name]),!0}})},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&(t.delete(),++r.RowAffected),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;if(t){var n=function(){t.delete(),++o.RowAffected};o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue()}},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){u.onTransactionCompleted()},s.Transaction.onerror=function(e){u.onErrorOccured(e)},void 0==n.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){var t;!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(t=e.WebWorkerStatus||(e.WebWorkerStatus={})),e.WorkerStatus=t.NotStarted;var n=function(){function n(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(n){this.RequestQueue.push(n),e.EnableLog&&console.log("request pushed:"+n.Name),1==this.RequestQueue.length&&e.WorkerStatus!=t.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){e.EnableLog&&console.log("request executing"+this.RequestQueue[0].Name),this.IsCodeExecuting=!0;var n={Name:this.RequestQueue[0].Name,Query:this.RequestQueue[0].Query};e.WorkerStatus==t.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished:"+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=t.Failed,this.executeCode()},this.createWorker=function(){var n=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){n.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=t.Failed&&(e.WorkerStatus=t.Registered),n.executeCode()},100)):n.onWorkerFailed()}else n.onWorkerFailed()}catch(e){n.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return n.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},n}();e.CodeExecutionHelper=n}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB)self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange;else{if(self.alert)throw"Your browser doesnot support IndexedDb";console.log("worked failed"),self.postMessage("message:WorkerFailed")}},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName),setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.10/JsStore-1.1.10.d.ts b/Dist/V 1.1/V 1.1.10/JsStore-1.1.10.d.ts deleted file mode 100644 index 63752fc4..00000000 --- a/Dist/V 1.1/V 1.1.10/JsStore-1.1.10.d.ts +++ /dev/null @@ -1,703 +0,0 @@ -/** JsStore.js - v1.1.10 - 03/10/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - IndexedDbUndefined = "indexeddb_undefined", - IndexedDbBlocked = "indexeddb_blocked", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - UnableToStart = "unable_to_start", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipExtraCheck: boolean; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus, TempResults: Array; - var throwError: (error: any) => never; - var getObjectFirstKey: (value: any) => string; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - static setDbType: () => void; - } -} -declare module JsStore { - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack: Function) => void; - var getDbVersion: (dbName: string, callback: Function) => void; - var getDbSchema: (dbName: string, callback: Function) => void; - var isNull: (value: any) => boolean; - var enableLog: () => void; - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - SendResultFlag: Boolean; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - protected getObjectSecondKey: (value: any) => string; - protected goToWhereLogic: () => void; - protected getPrimaryKey: (tableName: any) => any; - private getKeyPath; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private checkAndModifyValues; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - private checkAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - protected removeDuplicates: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private orQuerySuccess; - private executeOrLogic; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - protected onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - createDb(dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function): this; - dropDb(onSuccess: Function, onError?: Function): this; - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - count(query: ICount, onSuccess?: Function, onError?: Function): this; - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - var init: () => void; - var get: (key: string, onSuccess: Function, onError?: Function) => any; - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.1/V 1.1.10/JsStore-1.1.10.js b/Dist/V 1.1/V 1.1.10/JsStore-1.1.10.js deleted file mode 100644 index 00203d8e..00000000 --- a/Dist/V 1.1/V 1.1.10/JsStore-1.1.10.js +++ /dev/null @@ -1,3534 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - ErrorType["IndexedDbUndefined"] = "indexeddb_undefined"; - ErrorType["IndexedDbBlocked"] = "indexeddb_blocked"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["UnableToStart"] = "unable_to_start"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }, JsStore.TempResults = []; - JsStore.throwError = function (error) { - throw error; - }; - JsStore.getObjectFirstKey = function (value) { - for (var key in value) { - return key; - } - return null; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - else { - if (errCallBack) { - var Error = { - Name: JsStore.Status.LastError, - Message: '' - }; - switch (Error.Name) { - case JsStore.ErrorType.IndexedDbBlocked: - Error.Message = "IndexedDB is blocked"; - break; - case JsStore.ErrorType.IndexedDbUndefined: - Error.Message = "IndexedDB is not supported"; - break; - } - errCallBack(Error); - } - } - }; - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - JsStore.enableLog = function () { - JsStore.EnableLog = true; - }; - JsStore.disableLog = function () { - JsStore.EnableLog = false; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.SendResultFlag = true; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - this.getObjectSecondKey = function (value) { - var IsSecond = false; - for (var key in value) { - if (IsSecond) { - return key; - } - else { - IsSecond = true; - } - } - }; - this.goToWhereLogic = function () { - var Column = JsStore.getObjectFirstKey(this.Query.Where); - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1); - var Key = JsStore.getObjectFirstKey(Value); - switch (Key) { - case 'Like': - { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - ; - break; - case 'In': - { - for (var i = 0; i < Value['In'].length; i++) { - this.executeWhereLogic(Column, Value['In'][i]); - } - } - ; - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - this.executeWhereLogic(Column, Value, Key); - break; - default: this.executeWhereLogic(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1); - this.executeWhereLogic(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - }; - this.getPrimaryKey = function (tableName) { - var PrimaryKey = this.getTable(tableName).PrimaryKey; - return PrimaryKey ? PrimaryKey : this.getKeyPath(); - }; - this.getKeyPath = function (tableName) { - var Transaction = Business.DbConnection.transaction([tableName], "readonly"), ObjectStore = Transaction.objectStore(tableName); - return ObjectStore.keyPath; - }; - } - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - switch (CompSymbol) { - case JsStore.Occurence.Any: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - SymbolIndex = value.lastIndexOf(CompValue.toLowerCase()); - if (SymbolIndex < value.length - CompValue.length) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - case '>': - if (value <= CompareValue) { - Status = false; - } - ; - break; - case '<': - if (value >= CompareValue) { - Status = false; - } - ; - break; - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - if (typeof ColumnValue == 'object') { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - else { - var CompareValue = rowValue[Column]; - if (ColumnValue != CompareValue) { - Status = false; - break; - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.checkAndModifyValues = function (callBack) { - var That = this, checkInternal = function (value) { - if (value) { - That.checkAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - callBack(); - } - }; - checkInternal(this.Query.Values[this.ValuesIndex++]); - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(this.Query.Values[That.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - if (!_this.Query.SkipExtraCheck) { - _this.checkAndModifyValues(function () { - That.insertData(); - }); - } - else { - _this.insertData(); - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - Insert.prototype.checkAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - if (column.NotNull && JsStore.isNull(value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.Sorted = false; - _this.CheckFlag = false; - _this.removeDuplicates = function () { - var Datas = this.Results; - this.Results = undefined; - var Key = this.getPrimaryKey(this.Query.From); - var lookupObject = {}; - for (var i in Datas) { - lookupObject[Datas[i][Key]] = Datas[i]; - } - Datas = []; - for (i in lookupObject) { - Datas.push(lookupObject[i]); - } - this.Results = Datas; - }; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSkip = function () { - var Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLimit = function () { - var That = this; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSimple = function () { - var That = this; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest, Cursor, executeSkipAndLimit = function () { - var RecordSkipped = false; - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeSkip = function () { - var RecordSkipped = false; - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeLimit = function () { - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }, executeSimple = function () { - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - results.forEach(function (value, index) { - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - doJoin(Item, value, i); - } - }); - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - this.OnSuccess(this.Results); - } - else if (this.SendResultFlag) { - this.OnSuccess(this.Results); - } - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.orQuerySuccess = function () { - this.Results = this.OrInfo.Results; - this.OrInfo.Results = undefined; - this.removeDuplicates(); - this.OrInfo.OnSucess(this.Results); - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess, - Results: [] - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - this.OrInfo.Results = this.OrInfo.Results.concat(this.Results); - if (!this.Query.Limit || (this.Query.Limit > this.OrInfo.Results.length)) { - this.Results = []; - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.orQuerySuccess(); - } - } - else { - this.orQuerySuccess(); - } - }; - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (!That.CheckFlag && this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - That.ObjectStore = That.Transaction.objectStore(query.From); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where != undefined) { - if (query.Where.Or) { - new Business.Select.Instance(query, function (results) { - That.ResultCount = results.length; - That.onTransactionCompleted(); - }, _this.OnError); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.In); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - var That = this; - new Business.Select.Instance({ - From: this.Query.In, - Where: this.Query.Where - }, function (results) { - var Key = That.getPrimaryKey(That.Query.In), InQuery = [], WhereQry = {}; - results.forEach(function (value) { - InQuery.push(value[Key]); - }); - WhereQry[Key] = { In: InQuery }; - That.createtransactionForOrLogic({ - In: That.Query.In, - Where: WhereQry, - Set: That.Query.Set - }); - }, this.OnError); - }; - try { - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - var That = _this; - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(query.In); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - if (suppliedValue) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - } - else { - this.ErrorOccured = true; - this.OnSuccess(0); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.OrInfo.OnSucess(this.RowAffected); - } - }; - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - if (JsStore.EnableLog) { - console.log("request executing : " + FirstRequest.Name); - } - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbUndefined - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbBlocked, - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore-1.1.10.js.map \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.10/JsStore-1.1.10.js.map b/Dist/V 1.1/V 1.1.10/JsStore-1.1.10.js.map deleted file mode 100644 index d64b870a..00000000 --- a/Dist/V 1.1/V 1.1.10/JsStore-1.1.10.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.1.10.js","sourceRoot":"","sources":["../License.ts","../JsStore/Script/enums.ts","../JsStore/Script/interfaces.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/HelperLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.1.10 - 03/10/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipExtraCheck: boolean\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n}","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function) {\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n else {\r\n if (errCallBack) {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n }\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In': {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeWhereLogic(Column, Value['In'][i])\r\n }\r\n }; break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private checkAndModifyValues = function (callBack) {\r\n var That = this,\r\n checkInternal = function (value) {\r\n if (value) {\r\n That.checkAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n callBack();\r\n }\r\n };\r\n checkInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(this.Query.Values[That.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n if (!this.Query.SkipExtraCheck) {\r\n this.checkAndModifyValues(function () {\r\n That.insertData();\r\n });\r\n }\r\n else {\r\n this.insertData();\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the value based on defined schema and modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n else if (this.SendResultFlag) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (!That.CheckFlag && this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n protected onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + FirstRequest.Name)\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();"]} \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.10/JsStore-1.1.10.min.js b/Dist/V 1.1/V 1.1.10/JsStore-1.1.10.min.js deleted file mode 100644 index 47e2676c..00000000 --- a/Dist/V 1.1/V 1.1.10/JsStore-1.1.10.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.1.9 - 26/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.TempResults=[],e.throwError=function(e){throw e},e.getObjectFirstKey=function(e){for(var t in e)return t;return null}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n){var r={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:r.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:r.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:r.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:r.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:r.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:r.Message="No value supplied";break;case e.ErrorType.InvalidOp:r.Message="Invalid Op Value '"+n.Op+"'";break;case e.ErrorType.ColumnNotExist:r.Message="Column '"+n.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:r.Message="Null value is not allowed for column '"+n.ColumnName+"'";break;case e.ErrorType.BadDataType:r.Message="Supplied value for column '"+n.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:r.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:r.Message="Table '"+n.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:r.Message="Database '"+n.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return r},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n,r){if(e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})}else if(r){var o={Name:e.Status.LastError,Message:""};switch(o.Name){case e.ErrorType.IndexedDbBlocked:o.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:o.Message="IndexedDB is not supported"}r(o)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0},e.disableLog=function(){e.EnableLog=!1}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(t,n){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+n),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:en.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.SendResultFlag=!0,this.onErrorOccured=function(t,n){if(void 0===n&&(n=!1),1==++this.ErrorCount&&null!=this.OnError){if(n)this.OnError(t);else{var r={Name:t.target.error.name,Message:t.target.error.message};this.OnError(r)}e.EnableLog&&console.error(r)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,n){switch(t.name){case"NotFoundError":var r=e.Utils.getError(e.ErrorType.TableNotExist,n);e.throwError(r);default:console.error(t)}},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n},this.getObjectSecondKey=function(e){var t=!1;for(var n in e){if(t)return n;t=!0}},this.goToWhereLogic=function(){var t=e.getObjectFirstKey(this.Query.Where);if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("object"==typeof n){this.CheckFlag=Boolean(Object.keys(n).length>1||Object.keys(this.Query.Where).length>1);var r=e.getObjectFirstKey(n);switch(r){case"Like":var o=n.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":for(var s=0;s":case"<":case">=":case"<=":this.executeWhereLogic(t,n,r);break;default:this.executeWhereLogic(t,n)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)},this.getPrimaryKey=function(e){var t=this.getTable(e).PrimaryKey;return t||this.getKeyPath()},this.getKeyPath=function(e){return t.DbConnection.transaction([e],"readonly").objectStore(e).keyPath}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;if("object"==typeof s)for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,i=o.length;s2?e.Occurence.Any:e.Occurence.Last):(i=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(u=o.indexOf(i.toLowerCase()))<0&&(r=!1);break;case e.Occurence.First:((u=o.indexOf(i.toLowerCase()))>0||u<0)&&(r=!1);break;default:(u=o.lastIndexOf(i.toLowerCase()))":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":t<=s&&(r=!1);break;case"<":t>=s&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],i)}}else if(s!=t[o]){r=!1;break}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=[],i=indexedDB.open(t.ActiveDataBase.Name,n);i.onerror=function(e){null!=o&&o(e.target.error)},i.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=i.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=r&&r(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},i.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),u(n,e)):e.RequireCreation&&u(n,e)})};var u=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}s.push(n.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var i=n.call(this)||this;i.ValuesAffected=[],i.ValuesIndex=0,i.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},i.checkAndModifyValues=function(e){var t=this,n=function(r){r?t.checkAndModifyValue(r,function(){t.ErrorOccured?t.onErrorOccured(t.Error,!0):n(t.Query.Values[t.ValuesIndex++])}):e()};n(this.Query.Values[this.ValuesIndex++])},i.insertData=function(){var e=this,n=this.Query.Return,r=function(t){if(t){var o=e.ObjectStore.add(t);o.onerror=function(t){e.onErrorOccured(t)},o.onsuccess=function(o){n?e.ValuesAffected.push(t):++e.RowAffected,r(e.Query.Values[e.ValuesIndex++])}}};e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},r(this.Query.Values[e.ValuesIndex++])};try{i.Query=r,i.OnSuccess=o,i.OnError=s;var u=i;if(i.Table=i.getTable(r.Into),i.Table)i.Query.SkipExtraCheck?i.insertData():i.checkAndModifyValues(function(){u.insertData()});else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(c)}}catch(e){i.onExceptionOccured(e,{TableName:r.Into})}return i}return __extends(r,n),r.prototype.checkAndModifyValue=function(n,r){var o=this,s=this.Table.Name,i=0,u=function(c){if(c){var a=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)},l=function(){c.NotNull&&e.isNull(n[c.Name])?a(e.ErrorType.NullValue,{ColumnName:c.Name}):c.DataType&&typeof n[c.Name]!=c.DataType&&a(e.ErrorType.BadDataType,{ColumnName:c.Name}),u(o.Table.Columns[i++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),l()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,l()):l()}else r()};u(o.Table.Columns[i++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=r&&r()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,i=s,u=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return u.onsuccess=function(t){i.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},u.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(e.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(e.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){Array.isArray(n.Values)?new t.Insert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var i=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):i()})},200)};i()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.Sorted=!1,t.CheckFlag=!1,t.removeDuplicates=function(){var e=this.Results;this.Results=void 0;var t=this.getPrimaryKey(this.Query.From),n={};for(var r in e)n[e[r][t]]=e[r];e=[];for(r in n)e.push(n[r]);this.Results=e},t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By)if(n.ObjectStore.indexNames.contains(this.Query.Order.By)){var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else{var o=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(o)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=this.SkipRecord,t=this,n=function(n){0==e?t.Results.push(n):--e};t.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var r=e.target.result;t.Results.length!=t.LimitRecord&&r&&(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&n(r.value),r.continue())}:this.CursorOpenRequest.onsuccess=function(e){var r=e.target.result;t.Results.length!=t.LimitRecord&&r&&(t.filterOnOccurence(r.value)&&n(r.value),r.continue())}},n.executeSkip=function(){var e=this.SkipRecord,t=this,n=function(n){0==e?t.Results.push(n):--e};t.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var r=e.target.result;r&&(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&n(r.value),r.continue())}:this.CursorOpenRequest.onsuccess=function(e){var r=e.target.result;r&&(t.filterOnOccurence(r.value)&&n(r.value),r.continue())}},n.executeLimit=function(){var e=this;e.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}:this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(e.filterOnOccurence(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;e.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}:this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(e.filterOnOccurence(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.LimitRecord?s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&s.checkForWhereConditionMatch(o.value)&&(s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&(s.Results.push(o.value),o.continue())}:s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&(s.Results.push(o.value),o.continue())}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],i=0,u=(n.Column,o.Results),c=u.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[i]={},e==t[n.Column]){s[i][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(u=0;ur.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var i=n.call(this)||this;i.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess(this.Results)},i.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readonly"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},i.orQuerySuccess=function(){this.Results=this.OrInfo.Results,this.OrInfo.Results=void 0,this.removeDuplicates(),this.OrInfo.OnSucess(this.Results)},i.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess,Results:[]},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){if(this.OrInfo.Results=this.OrInfo.Results.concat(this.Results),!this.Query.Limit||this.Query.Limit>this.OrInfo.Results.length){this.Results=[];var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.orQuerySuccess()}else this.orQuerySuccess()}};var u=i;i.Query=r,i.OnSuccess=o,i.OnError=s,i.SkipRecord=i.Query.Skip,i.LimitRecord=i.Query.Limit;try{i.Transaction=t.DbConnection.transaction([r.From],"readonly"),i.Transaction.oncomplete=function(e){u.onTransactionCompleted()},i.Transaction.ontimeout=u.onTransactionCompleted,i.ObjectStore=i.Transaction.objectStore(r.From),r.Where?(r.Where.Or&&i.executeOrLogic(),i.goToWhereLogic()):i.executeWhereUndefinedLogic()}catch(e){i.onExceptionOccured(e,{TableName:r.From})}return i}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var n=this.ObjectStore.openCursor();n.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},r.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}:this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r=this;if(t=n?t[n]:t,!r.CheckFlag&&this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,n));o.onsuccess=function(){r.ResultCount=o.result},o.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else{var s=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n));s.onsuccess=function(e){var t=e.target.result;t&&(r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())},s.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&this.OnSuccess(this.ResultCount)};var i=s;s.Query=n,s.OnSuccess=r,s.OnError=o;try{var u=function(){i.Transaction=e.DbConnection.transaction([n.From],"readonly"),i.ObjectStore=i.Transaction.objectStore(n.From),i.Transaction.oncomplete=function(e){i.onTransactionCompleted()},i.Transaction.ontimeout=i.onTransactionTimeout};void 0!=n.Where?n.Where.Or?new e.Select.Instance(n,function(e){i.ResultCount=e.length,i.onTransactionCompleted()},s.OnError):(u(),s.goToWhereLogic()):(u(),s.executeWhereUndefinedLogic())}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){var r=n.target.result;r&&(r.update(t.updateValue(e.Query.Set,r.value)),++e.RowAffected,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o=this;this.CompValue=n.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var n=e.target.result;n&&(o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&(n.update(t.updateValue(o.Query.Set,n.value)),++o.RowAffected),n.continue())}:this.CursorOpenRequest.onsuccess=function(e){var n=e.target.result;n&&(o.filterOnOccurence(n.value)&&(n.update(t.updateValue(o.Query.Set,n.value)),++o.RowAffected),n.continue())}},r}return __extends(r,n),r}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereLogic=function(t,n,r){var o,s=this;n=r?n[r]:n,o=this.ObjectStore.index(t).openCursor(this.getKeyRange(n,r)),s.CheckFlag?o.onsuccess=function(t){var n=t.target.result;n&&(s.checkForWhereConditionMatch(n.value)&&(n.update(e.updateValue(s.Query.Set,n.value)),++s.RowAffected),n.continue())}:o.onsuccess=function(t){var n=t.target.result;n&&(n.update(e.updateValue(s.Query.Set,n.value)),++s.RowAffected,n.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},n}return __extends(n,t),n}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)},s.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.In],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.In),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},s.executeOrLogic=function(){var e=this;new t.Select.Instance({From:this.Query.In,Where:this.Query.Where},function(t){var n=e.getPrimaryKey(e.Query.In),r=[],o={};t.forEach(function(e){r.push(e[n])}),o[n]={In:r},e.createtransactionForOrLogic({In:e.Query.In,Where:o,Set:e.Query.Set})},this.OnError)};try{if(s.OnSuccess=r,s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e;var i=s,u=function(){i.Transaction=t.DbConnection.transaction([e.In],"readwrite"),i.ObjectStore=i.Transaction.objectStore(e.In),i.Transaction.oncomplete=function(e){i.onTransactionCompleted()},i.Transaction.ontimeout=i.onTransactionTimeout};e.Where?e.Where.Or?s.executeOrLogic():(u(),s.goToWhereLogic()):(u(),s.executeWhereUndefinedLogic())}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){if(t){var r=this.getTable(n),o=this;if(r){var s=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)};r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){!function(t){if(n.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:n.Name}),n.DataType){var r=typeof t;if(r!=n.DataType)if("object"!=r)s(e.ErrorType.BadDataType,{ColumnName:n.Name});else{var o=["+","-","*","/"];for(var i in t){o.indexOf(i)<0&&s(e.ErrorType.BadDataType,{ColumnName:n.Name});break}}}}(t[n.Name])}return!0})}else{var i=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n});e.throwError(i)}}else this.ErrorOccured=!0,this.OnSuccess(0)},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},r.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&(t.delete(),++r.RowAffected),t.continue())}:this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(!r.CheckFlag&&r.filterOnOccurence(t.value)&&(t.delete(),++r.RowAffected),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),o.CheckFlag?r.onsuccess=function(e){var t=e.target.result;t&&(o.checkForWhereConditionMatch(t.value)&&(t.delete(),++o.RowAffected),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(t.delete(),++o.RowAffected,t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var i=n.call(this)||this;i.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},i.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},i.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.OrInfo.OnSucess(this.RowAffected)}};try{var u=i;i.Query=r,i.OnSuccess=o,i.OnError=s,i.Transaction=t.DbConnection.transaction([r.From],"readwrite"),i.ObjectStore=i.Transaction.objectStore(r.From),i.Transaction.oncomplete=function(){u.onTransactionCompleted()},i.Transaction.onerror=function(e){u.onErrorOccured(e)},r.Where?(r.Where.Or&&i.executeOrLogic(),i.goToWhereLogic()):i.executeWhereUndefinedLogic()}catch(e){i.onExceptionOccured(e,{TableName:r.From})}return i}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(t){this.RequestQueue.push(t),e.EnableLog&&console.log("request pushed:"+t.Name),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],n={Name:t.Name,Query:t.Query};e.EnableLog&&console.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished : "+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var n=this.getScriptUrl();n&&n.length>0?(e.WorkerInstance=new Worker(n),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){void 0===n&&(n=null);var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var i=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(i.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var i=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(i.RowAffected)},s.Transaction.onerror=function(e){i.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var i=self.indexedDB.open(n,1);i.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},i.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=i.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},i.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName,function(){r.checkConnectionAndExecuteLogic(n)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.2/JsStore-1.1.2.d.ts b/Dist/V 1.1/V 1.1.2/JsStore-1.1.2.d.ts deleted file mode 100644 index d61297f6..00000000 --- a/Dist/V 1.1/V 1.1.2/JsStore-1.1.2.d.ts +++ /dev/null @@ -1,840 +0,0 @@ -/** JsStore.js - v1.1.2 - 31/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipExtraCheck: boolean; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - var EnableLog: boolean, DbVersion: number; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, logError: boolean, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {string} dbName - * @param {Function} callback - */ - var isDbExist: (dbInfo: DbInfo, callback: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private checkAndModifyValues; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase, Status: JsStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - SendResultFlag: Boolean; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => boolean; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CheckFlag: boolean; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName: any); - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - createDb(dataBase: Model.IDataBase, onSuccess: Function, onError?: Function): this; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb(onSuccess: Function, onError?: Function): this; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count(query: ICount, onSuccess?: Function, onError?: Function): this; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.1/V 1.1.2/JsStore-1.1.2.js b/Dist/V 1.1/V 1.1.2/JsStore-1.1.2.js deleted file mode 100644 index 6b5cc7b0..00000000 --- a/Dist/V 1.1/V 1.1.2/JsStore-1.1.2.js +++ /dev/null @@ -1,3481 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.1.2 - 31/8/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - JsStore.EnableLog = false; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, logError, errorDetail) { - if (logError === void 0) { logError = false; } - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - if (logError) { - console.error("JsStore Error :- " + Error.Message); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.isDbExist = function (dbInfo, callback) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - throw "Column Name is not defined for table:" + tableName; - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : ''; - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion != That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion ? (JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version) : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, false, info); - throw Error; - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - switch (CompSymbol) { - case JsStore.Occurence.Any: - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - if (SymbolIndex(CompValue) < value.length - 1) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (CompareValue <= value) { - Status = false; - } - ; - break; - //less than - case '<': - if (CompareValue >= value) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - var CompareValue = rowValue[Column]; - if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) { - Status = false; - } - else { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.checkAndModifyValues = function (callBack) { - var That = this, checkInternal = function (value) { - if (value) { - That.checkAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - callBack(); - } - }; - checkInternal(this.Query.Values[this.ValuesIndex++]); - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(this.Query.Values[That.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - if (!_this.Query.SkipExtraCheck) { - _this.checkAndModifyValues(function () { - That.insertData(); - }); - } - else { - _this.insertData(); - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, false, { TableName: query.Into }); - throw Error; - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(value[column.Name])) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: Business.ActiveDataBase.Name })); - } - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - throw "Value should be array :- supplied value is not array"; - } - else if (query.Values.length > 0) { - new Business.Insert(query, onSuccess, onError); - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.NoValueSupplied, true, null)); - } - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.SendResultFlag = true; - _this.Sorted = false; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By }); - return false; - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - } - Cursor.continue(); - } - }; - }; - _this.executeSkip = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - } - Cursor.continue(); - } - }; - }; - _this.executeLimit = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeSimple = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - else if (this.SendResultFlag) { - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - ++That.ResultCount; - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag && this.OnSuccess != null) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - if (ex.name == "NotFoundError") { - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, { TableName: query.From }); - } - else { - console.warn(ex); - } - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var updateValueInternal = function () { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - updateValueInternal(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - updateValueInternal(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.In); - var That = _this; - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionTimeout; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType && typeof value != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - }; - executeCheck(suppliedValue[column.Name]); - return true; - } - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, false, { TableName: tableName }); - throw Error; - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - deleteValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - JsStore.WorkerStatus = WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - if (JsStore.EnableLog) { - console.log("request executing" + this.RequestQueue[0].Name); - } - this.IsCodeExecuting = true; - var Request = { - Name: this.RequestQueue[0].Name, - Query: this.RequestQueue[0].Query - }; - if (JsStore.WorkerStatus == WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished:" + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != WebWorkerStatus.Failed) { - JsStore.WorkerStatus = WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName); - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore-1.1.2.js.map \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.2/JsStore-1.1.2.js.map b/Dist/V 1.1/V 1.1.2/JsStore-1.1.2.js.map deleted file mode 100644 index a5758988..00000000 --- a/Dist/V 1.1/V 1.1.2/JsStore-1.1.2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.1.2.js","sourceRoot":"","sources":["../License.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/HelperLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.1.2 - 31/8/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\"\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipExtraCheck: boolean\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\"\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export var EnableLog = false,\r\n DbVersion: number;\r\n}","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, logError: boolean = false, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n if (logError) {\r\n console.error(\"JsStore Error :- \" + Error.Message);\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throw \"Column Name is not defined for table:\" + tableName;\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : '';\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n else if (tableVersion != That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion ? (DbVersion > That.Version ? DbVersion : That.Version) : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, false, info);\r\n throw Error;\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n\r\n\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase())\r\n switch (CompSymbol) {\r\n case Occurence.Any: if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First: if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default: if (SymbolIndex(CompValue) < value.length - 1) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (CompareValue <= value) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (CompareValue >= value) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n }\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n var CompareValue = rowValue[Column];\r\n if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) {\r\n Status = false;\r\n }\r\n else {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n else {\r\n break;\r\n }\r\n\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private checkAndModifyValues = function (callBack) {\r\n var That = this,\r\n checkInternal = function (value) {\r\n if (value) {\r\n That.checkAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n callBack();\r\n }\r\n };\r\n checkInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(this.Query.Values[That.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n if (!this.Query.SkipExtraCheck) {\r\n this.checkAndModifyValues(function () {\r\n That.insertData();\r\n });\r\n }\r\n else {\r\n this.insertData();\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, false, { TableName: query.Into })\r\n throw Error;\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the value based on defined schema and modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.DbNotExist, true, { DbName: ActiveDataBase.Name }));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, true, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throw \"Value should be array :- supplied value is not array\";\r\n }\r\n else if (query.Values.length > 0) {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.NoValueSupplied, true, null));\r\n }\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n SendResultFlag: Boolean = true;\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By });\r\n return false;\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CheckFlag = false;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n else if (this.SendResultFlag) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n }\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n ++That.ResultCount;\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag && this.OnSuccess != null) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n \r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n if (ex.name == \"NotFoundError\") {\r\n Utils.getError(ErrorType.TableNotExist, true, { TableName: query.From });\r\n }\r\n else {\r\n console.warn(ex);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var updateValueInternal = function () {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n updateValueInternal();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n var That = this;\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionTimeout;\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType && typeof value != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n return true;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, false, { TableName: tableName });\r\n throw Error;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n deleteValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n if (EnableLog) {\r\n console.log(\"request executing\" + this.RequestQueue[0].Name)\r\n }\r\n this.IsCodeExecuting = true;\r\n var Request = {\r\n Name: this.RequestQueue[0].Name,\r\n Query: this.RequestQueue[0].Query\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished:\" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n\r\n","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName);\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();"]} \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.2/JsStore-1.1.2.min.js b/Dist/V 1.1/V 1.1.2/JsStore-1.1.2.min.js deleted file mode 100644 index 9d481c86..00000000 --- a/Dist/V 1.1/V 1.1.2/JsStore-1.1.2.min.js +++ /dev/null @@ -1 +0,0 @@ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist"}(e.ErrorType||(e.ErrorType={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={})),e.EnableLog=!1}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n,r){void 0===n&&(n=!1);var o={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:o.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:o.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:o.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:o.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:o.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:o.Message="No value supplied";break;case e.ErrorType.InvalidOp:o.Message="Invalid Op Value '"+r.Op+"'";break;case e.ErrorType.ColumnNotExist:o.Message="Column '"+r.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:o.Message="Null value is not allowed for column '"+r.ColumnName+"'";break;case e.ErrorType.BadDataType:o.Message="Supplied value for column '"+r.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:o.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:o.Message="Table '"+r.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:o.Message="Database '"+r.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return n&&console.error("JsStore Error :- "+o.Message),o},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,!indexedDB)throw"Your browser doesnot support IndexedDb";self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0},e.disableLog=function(){e.EnableLog=!1}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(e,t){if(null==e.Name)throw"Column Name is not defined for table:"+t;this.Name=e.Name,this.AutoIncrement=null!=e.AutoIncrement&&e.AutoIncrement,this.PrimaryKey=null!=e.PrimaryKey&&e.PrimaryKey,this.Unique=null!=e.Unique&&e.Unique,this.NotNull=null!=e.NotNull&&e.NotNull,this.DataType=null!=e.DataType?e.DataType:"",this.Default=e.Default}}();e.Column=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:e!=t.Version&&(t.RequireDelete=!0)})},n.prototype.setDbVersion=function(t){var n=this;e.DbVersion=e.DbVersion&&e.DbVersion>n.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.onErrorOccured=function(t,n){if(void 0===n&&(n=!1),1==++this.ErrorCount&&null!=this.OnError){if(n)this.OnError(t);else{var r={Name:t.target.error.name,Message:t.target.error.message};this.OnError(r)}e.EnableLog&&console.error(r)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,n){switch(t.name){case"NotFoundError":throw e.Utils.getError(e.ErrorType.TableNotExist,!1,n);default:console.error(t)}},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;var u=t[o];if("string"==typeof s&&s!=u)r=!1;else for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),i=o.indexOf(u.toLowerCase()),s){case e.Occurence.Any:i<0&&(r=!1);break;case e.Occurence.First:(i>0||i<0)&&(r=!1);break;default:i(u)":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":s<=t&&(r=!1);break;case"<":s>=t&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],i)}}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=r&&r(),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},s.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),u(n,e)):e.RequireCreation&&u(n,e)})};var u=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.checkAndModifyValues=function(e){var t=this,n=function(r){r?t.checkAndModifyValue(r,function(){t.ErrorOccured?t.onErrorOccured(t.Error,!0):n(t.Query.Values[t.ValuesIndex++])}):e()};n(this.Query.Values[this.ValuesIndex++])},u.insertData=function(){var e=this,n=this.Query.Return,r=function(t){if(t){var o=e.ObjectStore.add(t);o.onerror=function(t){e.onErrorOccured(t)},o.onsuccess=function(o){n?e.ValuesAffected.push(t):++e.RowAffected,r(e.Query.Values[e.ValuesIndex++])}}};e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},r(this.Query.Values[e.ValuesIndex++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;var i=u;if(u.Table=u.getTable(r.Into),!u.Table)throw e.Utils.getError(e.ErrorType.TableNotExist,!1,{TableName:r.Into});u.Query.SkipExtraCheck?u.insertData():u.checkAndModifyValues(function(){i.insertData()})}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r.prototype.checkAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(){c.NotNull&&e.isNull(n[c.Name])?(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:c.Name})):c.DataType&&typeof n[c.Name]!=c.DataType&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:c.Name})),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),a()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,a()):a()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Aborted"},null!=r&&r()}}else null!=o&&o(e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:t.ActiveDataBase.Name}))}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){t.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){if(!Array.isArray(n.Values))throw"Value should be array :- supplied value is not array";n.Values.length>0?new t.Insert(n,r,o):null!=o&&o(e.Utils.getError(e.ErrorType.NoValueSupplied,!0,null))},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.SendResultFlag=!0,t.Sorted=!1,t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By){if(!n.ObjectStore.indexNames.contains(this.Query.Order.By))return e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:this.Query.Order.By}),!1;var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.CheckFlag=!1,n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;t.Results.length!=t.LimitRecord&&r&&(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&(0==e?t.Results.push(r.value):--e),r.continue())}},n.executeSkip=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result;r&&(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&(0==e?t.Results.push(r.value):--e),r.continue())}},n.executeLimit=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&(o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess&&this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess&&this.OnSuccess(this.Results)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.SkipRecord=s.Query.Skip,s.LimitRecord=s.Query.Limit;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionCompleted,s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&++o.ResultCount:++o.ResultCount,t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){this.SendResultFlag&&null!=this.OnSuccess&&this.OnSuccess(this.ResultCount)};var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s;try{u.Transaction=t.DbConnection.transaction([r.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.ObjectStore=u.Transaction.objectStore(r.From),void 0!=r.Where?u.executeWhereLogic():u.executeWhereUndefinedLogic()}catch(t){"NotFoundError"==t.name?e.Utils.getError(e.ErrorType.TableNotExist,!0,{TableName:r.From}):console.warn(t)}return u}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){var r=n.target.result;r&&(r.update(t.updateValue(e.Query.Set,r.value)),++e.RowAffected,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o=this;this.CompValue=n.toLowerCase(),this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var n=e.target.result;n&&(o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&(n.update(t.updateValue(o.Query.Set,n.value)),++o.RowAffected),n.continue())}},r}return __extends(r,n),r}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.executeRequest=function(e,n,r){var o,s=this;n=r?n[r]:n,(o=this.ObjectStore.index(e).openCursor(this.getKeyRange(n,r))).onsuccess=function(e){var n=e.target.result;if(n){var r=function(){n.update(t.updateValue(s.Query.Set,n.value)),++s.RowAffected};s.CheckFlag?s.checkForWhereConditionMatch(n.value)&&r():r(),n.continue()}},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},r.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},r}return __extends(r,n),r}(t.Like);t.Where=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{u=s;if(s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e,s.OnSuccess=r,s.OnError=o,s.Transaction=t.DbConnection.transaction([e.In],"readwrite"),s.ObjectStore=s.Transaction.objectStore(e.In);var u=s;s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionTimeout,void 0==e.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){var r=this.getTable(n),o=this;if(!r)throw e.Utils.getError(e.ErrorType.TableNotExist,!1,{TableName:n});r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){return function(t){n.NotNull&&e.isNull(t)&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:n.Name})),n.DataType&&typeof t!=n.DataType&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:n.Name}))}(t[n.Name]),!0}})},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&(t.delete(),++r.RowAffected),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;if(t){var n=function(){t.delete(),++o.RowAffected};o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue()}},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){u.onTransactionCompleted()},s.Transaction.onerror=function(e){u.onErrorOccured(e)},void 0==n.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){var t;!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(t=e.WebWorkerStatus||(e.WebWorkerStatus={})),e.WorkerStatus=t.NotStarted;var n=function(){function n(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(n){this.RequestQueue.push(n),e.EnableLog&&console.log("request pushed:"+n.Name),1==this.RequestQueue.length&&e.WorkerStatus!=t.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){e.EnableLog&&console.log("request executing"+this.RequestQueue[0].Name),this.IsCodeExecuting=!0;var n={Name:this.RequestQueue[0].Name,Query:this.RequestQueue[0].Query};e.WorkerStatus==t.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished:"+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=t.Failed,this.executeCode()},this.createWorker=function(){var n=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){n.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=t.Failed&&(e.WorkerStatus=t.Registered),n.executeCode()},100)):n.onWorkerFailed()}else n.onWorkerFailed()}catch(e){n.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return n.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},n}();e.CodeExecutionHelper=n}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB)self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange;else{if(self.alert)throw"Your browser doesnot support IndexedDb";console.log("worked failed"),self.postMessage("message:WorkerFailed")}},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName),setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.3/JsStore-1.1.3.d.ts b/Dist/V 1.1/V 1.1.3/JsStore-1.1.3.d.ts deleted file mode 100644 index 969ec648..00000000 --- a/Dist/V 1.1/V 1.1.3/JsStore-1.1.3.d.ts +++ /dev/null @@ -1,840 +0,0 @@ -/** JsStore.js - v1.1.3 - 04/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipExtraCheck: boolean; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - var EnableLog: boolean, DbVersion: number; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, logError: boolean, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {string} dbName - * @param {Function} callback - */ - var isDbExist: (dbInfo: DbInfo, callback: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private checkAndModifyValues; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase, Status: JsStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - SendResultFlag: Boolean; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => boolean; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CheckFlag: boolean; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName: any); - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - createDb(dataBase: Model.IDataBase, onSuccess: Function, onError?: Function): this; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb(onSuccess: Function, onError?: Function): this; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count(query: ICount, onSuccess?: Function, onError?: Function): this; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.1/V 1.1.3/JsStore-1.1.3.js b/Dist/V 1.1/V 1.1.3/JsStore-1.1.3.js deleted file mode 100644 index cb82f7e9..00000000 --- a/Dist/V 1.1/V 1.1.3/JsStore-1.1.3.js +++ /dev/null @@ -1,3517 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.1.3 - 04/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - JsStore.EnableLog = false; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, logError, errorDetail) { - if (logError === void 0) { logError = false; } - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - if (logError) { - console.error("JsStore Error :- " + Error.Message); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.isDbExist = function (dbInfo, callback) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - throw "Column Name is not defined for table:" + tableName; - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : ''; - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion != That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion ? (JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version) : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, false, info); - throw Error; - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - switch (CompSymbol) { - case JsStore.Occurence.Any: - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - if (SymbolIndex(CompValue) < value.length - 1) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (CompareValue <= value) { - Status = false; - } - ; - break; - //less than - case '<': - if (CompareValue >= value) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - var CompareValue = rowValue[Column]; - if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) { - Status = false; - } - else { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.checkAndModifyValues = function (callBack) { - var That = this, checkInternal = function (value) { - if (value) { - That.checkAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - callBack(); - } - }; - checkInternal(this.Query.Values[this.ValuesIndex++]); - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(this.Query.Values[That.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - if (!_this.Query.SkipExtraCheck) { - _this.checkAndModifyValues(function () { - That.insertData(); - }); - } - else { - _this.insertData(); - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, false, { TableName: query.Into }); - throw Error; - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(value[column.Name])) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: Business.ActiveDataBase.Name })); - } - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, true, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - throw "Value should be array :- supplied value is not array"; - } - else if (query.Values.length > 0) { - new Business.Insert(query, onSuccess, onError); - } - else { - if (onError != null) { - onError(JsStore.Utils.getError(JsStore.ErrorType.NoValueSupplied, true, null)); - } - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.SendResultFlag = true; - _this.Sorted = false; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By }); - return false; - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, skipOrPush = function () { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - }; - if (That.Results.length != That.LimitRecord && Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - skipOrPush(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(); - } - Cursor.continue(); - } - }; - }; - _this.executeSkip = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, skipOrPush = function () { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - skipOrPush(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(); - } - Cursor.continue(); - } - }; - }; - _this.executeLimit = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeSimple = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - else if (this.SendResultFlag) { - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - ++That.ResultCount; - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag && this.OnSuccess != null) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - if (ex.name == "NotFoundError") { - JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, true, { TableName: query.From }); - } - else { - console.warn(ex); - } - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, updateValueInternal = function () { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - updateValueInternal(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - updateValueInternal(); - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var updateValueInternal = function () { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - updateValueInternal(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - updateValueInternal(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.In); - var That = _this; - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionTimeout; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, false, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType && typeof value != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, false, { ColumnName: column.Name }); - } - }; - executeCheck(suppliedValue[column.Name]); - return true; - } - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, false, { TableName: tableName }); - throw Error; - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - deleteValue(); - } - else if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag) { - deleteValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, true, { ColumnName: Column }); - this.onErrorOccured(this.Error, true); - } - } - break; - } - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - JsStore.WorkerStatus = WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - if (JsStore.EnableLog) { - console.log("request executing" + this.RequestQueue[0].Name); - } - this.IsCodeExecuting = true; - var Request = { - Name: this.RequestQueue[0].Name, - Query: this.RequestQueue[0].Query - }; - if (JsStore.WorkerStatus == WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished:" + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != WebWorkerStatus.Failed) { - JsStore.WorkerStatus = WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName); - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore-1.1.3.js.map \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.3/JsStore-1.1.3.js.map b/Dist/V 1.1/V 1.1.3/JsStore-1.1.3.js.map deleted file mode 100644 index 588c42d0..00000000 --- a/Dist/V 1.1/V 1.1.3/JsStore-1.1.3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.1.3.js","sourceRoot":"","sources":["../License.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/HelperLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.1.3 - 04/09/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\"\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipExtraCheck: boolean\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\"\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export var EnableLog = false,\r\n DbVersion: number;\r\n}","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, logError: boolean = false, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n if (logError) {\r\n console.error(\"JsStore Error :- \" + Error.Message);\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throw \"Column Name is not defined for table:\" + tableName;\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : '';\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n else if (tableVersion != That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion ? (DbVersion > That.Version ? DbVersion : That.Version) : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, false, info);\r\n throw Error;\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n\r\n\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase())\r\n switch (CompSymbol) {\r\n case Occurence.Any: if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First: if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default: if (SymbolIndex(CompValue) < value.length - 1) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (CompareValue <= value) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (CompareValue >= value) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n }\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n var CompareValue = rowValue[Column];\r\n if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) {\r\n Status = false;\r\n }\r\n else {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n else {\r\n break;\r\n }\r\n\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private checkAndModifyValues = function (callBack) {\r\n var That = this,\r\n checkInternal = function (value) {\r\n if (value) {\r\n That.checkAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n callBack();\r\n }\r\n };\r\n checkInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(this.Query.Values[That.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n if (!this.Query.SkipExtraCheck) {\r\n this.checkAndModifyValues(function () {\r\n That.insertData();\r\n });\r\n }\r\n else {\r\n this.insertData();\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, false, { TableName: query.Into })\r\n throw Error;\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the value based on defined schema and modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.DbNotExist, true, { DbName: ActiveDataBase.Name }));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, true, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throw \"Value should be array :- supplied value is not array\";\r\n }\r\n else if (query.Values.length > 0) {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n else {\r\n if (onError != null) {\r\n onError(Utils.getError(ErrorType.NoValueSupplied, true, null));\r\n }\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n SendResultFlag: Boolean = true;\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: this.Query.Order.By });\r\n return false;\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CheckFlag = false;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n skipOrPush = function () {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n skipOrPush = function () {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n else if (this.SendResultFlag) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n }\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n ++That.ResultCount;\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag && this.OnSuccess != null) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n \r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n if (ex.name == \"NotFoundError\") {\r\n Utils.getError(ErrorType.TableNotExist, true, { TableName: query.From });\r\n }\r\n else {\r\n console.warn(ex);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n updateValueInternal = function () {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var updateValueInternal = function () {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n updateValueInternal();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n var That = this;\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionTimeout;\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, false, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType && typeof value != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, false, { ColumnName: column.Name });\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n return true;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, false, { TableName: tableName });\r\n throw Error;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n deleteValue();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n deleteValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, true, { ColumnName: Column });\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n if (EnableLog) {\r\n console.log(\"request executing\" + this.RequestQueue[0].Name)\r\n }\r\n this.IsCodeExecuting = true;\r\n var Request = {\r\n Name: this.RequestQueue[0].Name,\r\n Query: this.RequestQueue[0].Query\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished:\" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n\r\n","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName);\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();"]} \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.3/JsStore-1.1.3.min.js b/Dist/V 1.1/V 1.1.3/JsStore-1.1.3.min.js deleted file mode 100644 index 8029604f..00000000 --- a/Dist/V 1.1/V 1.1.3/JsStore-1.1.3.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.1.3 - 04/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist"}(e.ErrorType||(e.ErrorType={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={})),e.EnableLog=!1}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n,r){void 0===n&&(n=!1);var o={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:o.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:o.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:o.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:o.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:o.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:o.Message="No value supplied";break;case e.ErrorType.InvalidOp:o.Message="Invalid Op Value '"+r.Op+"'";break;case e.ErrorType.ColumnNotExist:o.Message="Column '"+r.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:o.Message="Null value is not allowed for column '"+r.ColumnName+"'";break;case e.ErrorType.BadDataType:o.Message="Supplied value for column '"+r.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:o.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:o.Message="Table '"+r.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:o.Message="Database '"+r.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return n&&console.error("JsStore Error :- "+o.Message),o},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,!indexedDB)throw"Your browser doesnot support IndexedDb";self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0},e.disableLog=function(){e.EnableLog=!1}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(e,t){if(null==e.Name)throw"Column Name is not defined for table:"+t;this.Name=e.Name,this.AutoIncrement=null!=e.AutoIncrement&&e.AutoIncrement,this.PrimaryKey=null!=e.PrimaryKey&&e.PrimaryKey,this.Unique=null!=e.Unique&&e.Unique,this.NotNull=null!=e.NotNull&&e.NotNull,this.DataType=null!=e.DataType?e.DataType:"",this.Default=e.Default}}();e.Column=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:e!=t.Version&&(t.RequireDelete=!0)})},n.prototype.setDbVersion=function(t){var n=this;e.DbVersion=e.DbVersion&&e.DbVersion>n.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.onErrorOccured=function(t,n){if(void 0===n&&(n=!1),1==++this.ErrorCount&&null!=this.OnError){if(n)this.OnError(t);else{var r={Name:t.target.error.name,Message:t.target.error.message};this.OnError(r)}e.EnableLog&&console.error(r)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,n){switch(t.name){case"NotFoundError":throw e.Utils.getError(e.ErrorType.TableNotExist,!1,n);default:console.error(t)}},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;var u=t[o];if("string"==typeof s&&s!=u)r=!1;else for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),i=o.indexOf(u.toLowerCase()),s){case e.Occurence.Any:i<0&&(r=!1);break;case e.Occurence.First:(i>0||i<0)&&(r=!1);break;default:i(u)":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":s<=t&&(r=!1);break;case"<":s>=t&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],i)}}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=r&&r(),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},s.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),u(n,e)):e.RequireCreation&&u(n,e)})};var u=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.checkAndModifyValues=function(e){var t=this,n=function(r){r?t.checkAndModifyValue(r,function(){t.ErrorOccured?t.onErrorOccured(t.Error,!0):n(t.Query.Values[t.ValuesIndex++])}):e()};n(this.Query.Values[this.ValuesIndex++])},u.insertData=function(){var e=this,n=this.Query.Return,r=function(t){if(t){var o=e.ObjectStore.add(t);o.onerror=function(t){e.onErrorOccured(t)},o.onsuccess=function(o){n?e.ValuesAffected.push(t):++e.RowAffected,r(e.Query.Values[e.ValuesIndex++])}}};e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},r(this.Query.Values[e.ValuesIndex++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;var i=u;if(u.Table=u.getTable(r.Into),!u.Table)throw e.Utils.getError(e.ErrorType.TableNotExist,!1,{TableName:r.Into});u.Query.SkipExtraCheck?u.insertData():u.checkAndModifyValues(function(){i.insertData()})}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r.prototype.checkAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(){c.NotNull&&e.isNull(n[c.Name])?(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:c.Name})):c.DataType&&typeof n[c.Name]!=c.DataType&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:c.Name})),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),a()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,a()):a()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Aborted"},null!=r&&r()}}else null!=o&&o(e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:t.ActiveDataBase.Name}))}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,!0,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){t.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){if(!Array.isArray(n.Values))throw"Value should be array :- supplied value is not array";n.Values.length>0?new t.Insert(n,r,o):null!=o&&o(e.Utils.getError(e.ErrorType.NoValueSupplied,!0,null))},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.SendResultFlag=!0,t.Sorted=!1,t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By){if(!n.ObjectStore.indexNames.contains(this.Query.Order.By))return e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:this.Query.Order.By}),!1;var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.CheckFlag=!1,n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result,o=function(){0==e?t.Results.push(r.value):--e};t.Results.length!=t.LimitRecord&&r&&(!t.CheckFlag&&t.filterOnOccurence(r.value)?o():t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&o(),r.continue())}},n.executeSkip=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result,o=function(){0==e?t.Results.push(r.value):--e};r&&(!t.CheckFlag&&t.filterOnOccurence(r.value)?o():t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&o(),r.continue())}},n.executeLimit=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(!e.CheckFlag&&e.filterOnOccurence(n.value)?e.Results.push(n.value):e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(!e.CheckFlag&&e.filterOnOccurence(n.value)?e.Results.push(n.value):e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.CheckFlag?o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value):o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.CheckFlag?o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value):o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess&&this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess&&this.OnSuccess(this.Results)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.SkipRecord=s.Query.Skip,s.LimitRecord=s.Query.Limit;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionCompleted,s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&++o.ResultCount:++o.ResultCount,t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){this.SendResultFlag&&null!=this.OnSuccess&&this.OnSuccess(this.ResultCount)};var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s;try{u.Transaction=t.DbConnection.transaction([r.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.ObjectStore=u.Transaction.objectStore(r.From),void 0!=r.Where?u.executeWhereLogic():u.executeWhereUndefinedLogic()}catch(t){"NotFoundError"==t.name?e.Utils.getError(e.ErrorType.TableNotExist,!0,{TableName:r.From}):console.warn(t)}return u}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){var r=n.target.result;r&&(r.update(t.updateValue(e.Query.Set,r.value)),++e.RowAffected,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o=this;this.CompValue=n.toLowerCase(),this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var n=e.target.result,r=function(){n.update(t.updateValue(o.Query.Set,n.value)),++o.RowAffected};n&&(!o.CheckFlag&&o.filterOnOccurence(n.value)?r():o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&r(),n.continue())}},r}return __extends(r,n),r}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.executeRequest=function(e,n,r){var o,s=this;n=r?n[r]:n,(o=this.ObjectStore.index(e).openCursor(this.getKeyRange(n,r))).onsuccess=function(e){var n=e.target.result;if(n){var r=function(){n.update(t.updateValue(s.Query.Set,n.value)),++s.RowAffected};s.CheckFlag?s.checkForWhereConditionMatch(n.value)&&r():r(),n.continue()}},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},r.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},r}return __extends(r,n),r}(t.Like);t.Where=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{u=s;if(s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e,s.OnSuccess=r,s.OnError=o,s.Transaction=t.DbConnection.transaction([e.In],"readwrite"),s.ObjectStore=s.Transaction.objectStore(e.In);var u=s;s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionTimeout,void 0==e.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){var r=this.getTable(n),o=this;if(!r)throw e.Utils.getError(e.ErrorType.TableNotExist,!1,{TableName:n});r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){return function(t){n.NotNull&&e.isNull(t)&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.NullValue,!1,{ColumnName:n.Name})),n.DataType&&typeof t!=n.DataType&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.BadDataType,!1,{ColumnName:n.Name}))}(t[n.Name]),!0}})},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result,n=function(){t.delete(),++r.RowAffected};t&&(!r.CheckFlag&&r.filterOnOccurence(t.value)?n():r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&n(),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result,n=function(){t.delete(),++o.RowAffected};t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,!0,{ColumnName:t}),this.onErrorOccured(this.Error,!0);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){u.onTransactionCompleted()},s.Transaction.onerror=function(e){u.onErrorOccured(e)},void 0==n.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){var t;!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(t=e.WebWorkerStatus||(e.WebWorkerStatus={})),e.WorkerStatus=t.NotStarted;var n=function(){function n(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(n){this.RequestQueue.push(n),e.EnableLog&&console.log("request pushed:"+n.Name),1==this.RequestQueue.length&&e.WorkerStatus!=t.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){e.EnableLog&&console.log("request executing"+this.RequestQueue[0].Name),this.IsCodeExecuting=!0;var n={Name:this.RequestQueue[0].Name,Query:this.RequestQueue[0].Query};e.WorkerStatus==t.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished:"+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=t.Failed,this.executeCode()},this.createWorker=function(){var n=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){n.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=t.Failed&&(e.WorkerStatus=t.Registered),n.executeCode()},100)):n.onWorkerFailed()}else n.onWorkerFailed()}catch(e){n.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return n.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},n}();e.CodeExecutionHelper=n}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB)self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange;else{if(self.alert)throw"Your browser doesnot support IndexedDb";console.log("worked failed"),self.postMessage("message:WorkerFailed")}},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName),setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.4/JsStore-1.1.4.d.ts b/Dist/V 1.1/V 1.1.4/JsStore-1.1.4.d.ts deleted file mode 100644 index 969e4818..00000000 --- a/Dist/V 1.1/V 1.1.4/JsStore-1.1.4.d.ts +++ /dev/null @@ -1,845 +0,0 @@ -/** JsStore.js - v1.1.4 - 07/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipExtraCheck: boolean; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number; - var throwError: (error: any) => never; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {string} dbName - * @param {Function} callback - */ - var isDbExist: (dbInfo: DbInfo, callback: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private checkAndModifyValues; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase, Status: JsStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - SendResultFlag: Boolean; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CheckFlag: boolean; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName: any); - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - createDb(dataBase: Model.IDataBase, onSuccess: Function, onError?: Function): this; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb(onSuccess: Function, onError?: Function): this; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count(query: ICount, onSuccess?: Function, onError?: Function): this; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.1/V 1.1.4/JsStore-1.1.4.js b/Dist/V 1.1/V 1.1.4/JsStore-1.1.4.js deleted file mode 100644 index a228852e..00000000 --- a/Dist/V 1.1/V 1.1.4/JsStore-1.1.4.js +++ /dev/null @@ -1,3524 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.1.4 - 07/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false; - JsStore.throwError = function (error) { - throw error; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.isDbExist = function (dbInfo, callback) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : ''; - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion != That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion ? (JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version) : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - switch (CompSymbol) { - case JsStore.Occurence.Any: - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - if (SymbolIndex(CompValue) < value.length - 1) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (CompareValue <= value) { - Status = false; - } - ; - break; - //less than - case '<': - if (CompareValue >= value) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - var CompareValue = rowValue[Column]; - if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) { - Status = false; - } - else { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.checkAndModifyValues = function (callBack) { - var That = this, checkInternal = function (value) { - if (value) { - That.checkAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - callBack(); - } - }; - checkInternal(this.Query.Values[this.ValuesIndex++]); - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(this.Query.Values[That.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - if (!_this.Query.SkipExtraCheck) { - _this.checkAndModifyValues(function () { - That.insertData(); - }); - } - else { - _this.insertData(); - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(value[column.Name])) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = JsStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (Business.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.SendResultFlag = true; - _this.Sorted = false; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, skipOrPush = function () { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - }; - if (That.Results.length != That.LimitRecord && Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - skipOrPush(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(); - } - Cursor.continue(); - } - }; - }; - _this.executeSkip = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, skipOrPush = function () { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - skipOrPush(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(); - } - Cursor.continue(); - } - }; - }; - _this.executeLimit = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeSimple = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - else if (this.SendResultFlag) { - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - ++That.ResultCount; - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag && this.OnSuccess != null) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, updateValueInternal = function () { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - updateValueInternal(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - updateValueInternal(); - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var updateValueInternal = function () { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - updateValueInternal(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - updateValueInternal(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.In); - var That = _this; - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionTimeout; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType && typeof value != column.DataType) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - throw Error; - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - deleteValue(); - } - else if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag) { - deleteValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - JsStore.WorkerStatus = WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - if (JsStore.EnableLog) { - console.log("request executing : " + this.RequestQueue[0].Name); - } - this.IsCodeExecuting = true; - var Request = { - Name: this.RequestQueue[0].Name, - Query: this.RequestQueue[0].Query - }; - if (JsStore.WorkerStatus == WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != WebWorkerStatus.Failed) { - JsStore.WorkerStatus = WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - throw 'Your browser doesnot support IndexedDb'; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName); - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 50); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore-1.1.4.js.map \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.4/JsStore-1.1.4.js.map b/Dist/V 1.1/V 1.1.4/JsStore-1.1.4.js.map deleted file mode 100644 index e7c25381..00000000 --- a/Dist/V 1.1/V 1.1.4/JsStore-1.1.4.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.1.4.js","sourceRoot":"","sources":["../License.ts","../JsStore/Script/enums.ts","../JsStore/Script/interfaces.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/HelperLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.1.4 - 07/09/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipExtraCheck: boolean\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\"\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number;\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n}","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : '';\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n else if (tableVersion != That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion ? (DbVersion > That.Version ? DbVersion : That.Version) : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n\r\n\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase())\r\n switch (CompSymbol) {\r\n case Occurence.Any: if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First: if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default: if (SymbolIndex(CompValue) < value.length - 1) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (CompareValue <= value) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (CompareValue >= value) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n }\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n var CompareValue = rowValue[Column];\r\n if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) {\r\n Status = false;\r\n }\r\n else {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n else {\r\n break;\r\n }\r\n\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private checkAndModifyValues = function (callBack) {\r\n var That = this,\r\n checkInternal = function (value) {\r\n if (value) {\r\n That.checkAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n callBack();\r\n }\r\n };\r\n checkInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(this.Query.Values[That.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n if (!this.Query.SkipExtraCheck) {\r\n this.checkAndModifyValues(function () {\r\n That.insertData();\r\n });\r\n }\r\n else {\r\n this.insertData();\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the value based on defined schema and modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n SendResultFlag: Boolean = true;\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CheckFlag = false;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n skipOrPush = function () {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n skipOrPush = function () {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n else if (this.SendResultFlag) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n }\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n ++That.ResultCount;\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag && this.OnSuccess != null) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex,{ TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n updateValueInternal = function () {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var updateValueInternal = function () {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n updateValueInternal();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n var That = this;\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionTimeout;\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType && typeof value != column.DataType) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throw Error;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n deleteValue();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n deleteValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + this.RequestQueue[0].Name)\r\n }\r\n this.IsCodeExecuting = true;\r\n var Request = {\r\n Name: this.RequestQueue[0].Name,\r\n Query: this.RequestQueue[0].Query\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n throw 'Your browser doesnot support IndexedDb';\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName);\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 50);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();"]} \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.4/JsStore-1.1.4.min.js b/Dist/V 1.1/V 1.1.4/JsStore-1.1.4.min.js deleted file mode 100644 index 140c92a3..00000000 --- a/Dist/V 1.1/V 1.1.4/JsStore-1.1.4.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.1.4 - 07/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started"}(e.ConnectionStatus||(e.ConnectionStatus={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.throwError=function(e){throw e}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n){var r={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:r.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:r.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:r.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:r.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:r.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:r.Message="No value supplied";break;case e.ErrorType.InvalidOp:r.Message="Invalid Op Value '"+n.Op+"'";break;case e.ErrorType.ColumnNotExist:r.Message="Column '"+n.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:r.Message="Null value is not allowed for column '"+n.ColumnName+"'";break;case e.ErrorType.BadDataType:r.Message="Supplied value for column '"+n.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:r.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:r.Message="Table '"+n.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:r.Message="Database '"+n.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return r},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0},e.disableLog=function(){e.EnableLog=!1}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(t,n){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+n),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:"",this.Default=t.Default}}();t.Column=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:e!=t.Version&&(t.RequireDelete=!0)})},n.prototype.setDbVersion=function(t){var n=this;e.DbVersion=e.DbVersion&&e.DbVersion>n.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.onErrorOccured=function(t,n){if(void 0===n&&(n=!1),1==++this.ErrorCount&&null!=this.OnError){if(n)this.OnError(t);else{var r={Name:t.target.error.name,Message:t.target.error.message};this.OnError(r)}e.EnableLog&&console.error(r)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,n){switch(t.name){case"NotFoundError":var r=e.Utils.getError(e.ErrorType.TableNotExist,n);e.throwError(r);default:console.error(t)}},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;var u=t[o];if("string"==typeof s&&s!=u)r=!1;else for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),i=o.indexOf(u.toLowerCase()),s){case e.Occurence.Any:i<0&&(r=!1);break;case e.Occurence.First:(i>0||i<0)&&(r=!1);break;default:i(u)":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":s<=t&&(r=!1);break;case"<":s>=t&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],i)}}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=r&&r(),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},s.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),u(n,e)):e.RequireCreation&&u(n,e)})};var u=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.checkAndModifyValues=function(e){var t=this,n=function(r){r?t.checkAndModifyValue(r,function(){t.ErrorOccured?t.onErrorOccured(t.Error,!0):n(t.Query.Values[t.ValuesIndex++])}):e()};n(this.Query.Values[this.ValuesIndex++])},u.insertData=function(){var e=this,n=this.Query.Return,r=function(t){if(t){var o=e.ObjectStore.add(t);o.onerror=function(t){e.onErrorOccured(t)},o.onsuccess=function(o){n?e.ValuesAffected.push(t):++e.RowAffected,r(e.Query.Values[e.ValuesIndex++])}}};e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},r(this.Query.Values[e.ValuesIndex++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;var i=u;if(u.Table=u.getTable(r.Into),u.Table)u.Query.SkipExtraCheck?u.insertData():u.checkAndModifyValues(function(){i.insertData()});else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r.prototype.checkAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(){c.NotNull&&e.isNull(n[c.Name])?(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.NullValue,{ColumnName:c.Name})):c.DataType&&typeof n[c.Name]!=c.DataType&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.BadDataType,{ColumnName:c.Name})),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),a()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,a()):a()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Aborted"},null!=r&&r()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){t.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){Array.isArray(n.Values)?new t.Insert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.SendResultFlag=!0,t.Sorted=!1,t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By)if(n.ObjectStore.indexNames.contains(this.Query.Order.By)){var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else{var o=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(o)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.CheckFlag=!1,n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result,o=function(){0==e?t.Results.push(r.value):--e};t.Results.length!=t.LimitRecord&&r&&(!t.CheckFlag&&t.filterOnOccurence(r.value)?o():t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&o(),r.continue())}},n.executeSkip=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result,o=function(){0==e?t.Results.push(r.value):--e};r&&(!t.CheckFlag&&t.filterOnOccurence(r.value)?o():t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&o(),r.continue())}},n.executeLimit=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(!e.CheckFlag&&e.filterOnOccurence(n.value)?e.Results.push(n.value):e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(!e.CheckFlag&&e.filterOnOccurence(n.value)?e.Results.push(n.value):e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.CheckFlag?o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value):o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.CheckFlag?o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value):o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess&&this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess&&this.OnSuccess(this.Results)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.SkipRecord=s.Query.Skip,s.LimitRecord=s.Query.Limit;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionCompleted,s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var n=this.ObjectStore.openCursor();n.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&++o.ResultCount:++o.ResultCount,t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&null!=this.OnSuccess&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){var r=n.target.result;r&&(r.update(t.updateValue(e.Query.Set,r.value)),++e.RowAffected,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o=this;this.CompValue=n.toLowerCase(),this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var n=e.target.result,r=function(){n.update(t.updateValue(o.Query.Set,n.value)),++o.RowAffected};n&&(!o.CheckFlag&&o.filterOnOccurence(n.value)?r():o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&r(),n.continue())}},r}return __extends(r,n),r}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.executeRequest=function(e,n,r){var o,s=this;n=r?n[r]:n,(o=this.ObjectStore.index(e).openCursor(this.getKeyRange(n,r))).onsuccess=function(e){var n=e.target.result;if(n){var r=function(){n.update(t.updateValue(s.Query.Set,n.value)),++s.RowAffected};s.CheckFlag?s.checkForWhereConditionMatch(n.value)&&r():r(),n.continue()}},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},r.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},r}return __extends(r,n),r}(t.Like);t.Where=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{u=s;if(s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e,s.OnSuccess=r,s.Transaction=t.DbConnection.transaction([e.In],"readwrite"),s.ObjectStore=s.Transaction.objectStore(e.In);var u=s;s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionTimeout,void 0==e.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){var r=this.getTable(n),o=this;if(!r)throw e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n});r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){!function(t){n.NotNull&&e.isNull(t)&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.NullValue,{ColumnName:n.Name})),n.DataType&&typeof t!=n.DataType&&(o.ErrorOccured=!0,o.Error=e.Utils.getError(e.ErrorType.BadDataType,{ColumnName:n.Name}))}(t[n.Name])}return!0})},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result,n=function(){t.delete(),++r.RowAffected};t&&(!r.CheckFlag&&r.filterOnOccurence(t.value)?n():r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&n(),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result,n=function(){t.delete(),++o.RowAffected};t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){u.onTransactionCompleted()},s.Transaction.onerror=function(e){u.onErrorOccured(e)},void 0==n.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){var t;!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(t=e.WebWorkerStatus||(e.WebWorkerStatus={})),e.WorkerStatus=t.NotStarted;var n=function(){function n(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(n){this.RequestQueue.push(n),e.EnableLog&&console.log("request pushed:"+n.Name),1==this.RequestQueue.length&&e.WorkerStatus!=t.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){e.EnableLog&&console.log("request executing : "+this.RequestQueue[0].Name),this.IsCodeExecuting=!0;var n={Name:this.RequestQueue[0].Name,Query:this.RequestQueue[0].Query};e.WorkerStatus==t.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished : "+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=t.Failed,this.executeCode()},this.createWorker=function(){var n=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){n.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=t.Failed&&(e.WorkerStatus=t.Registered),n.executeCode()},100)):n.onWorkerFailed()}else n.onWorkerFailed()}catch(e){n.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return n.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},n}();e.CodeExecutionHelper=n}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){if(self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB)self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange;else{if(self.alert)throw"Your browser doesnot support IndexedDb";console.log("worked failed"),self.postMessage("message:WorkerFailed")}},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName),setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},50)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.5/JsStore-1.1.5.d.ts b/Dist/V 1.1/V 1.1.5/JsStore-1.1.5.d.ts deleted file mode 100644 index 2d4e16d8..00000000 --- a/Dist/V 1.1/V 1.1.5/JsStore-1.1.5.d.ts +++ /dev/null @@ -1,844 +0,0 @@ -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - IndexedDbUndefined = "indexeddb_undefined", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipExtraCheck: boolean; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus; - var throwError: (error: any) => never; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private checkAndModifyValues; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - SendResultFlag: Boolean; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CheckFlag: boolean; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - createDb(dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function): this; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb(onSuccess: Function, onError?: Function): this; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count(query: ICount, onSuccess?: Function, onError?: Function): this; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.1/V 1.1.5/JsStore-1.1.5.js b/Dist/V 1.1/V 1.1.5/JsStore-1.1.5.js deleted file mode 100644 index 2b817885..00000000 --- a/Dist/V 1.1/V 1.1.5/JsStore-1.1.5.js +++ /dev/null @@ -1,3566 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.1.5 - 14/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["IndexedDbUndefined"] = "indexeddb_undefined"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }; - JsStore.throwError = function (error) { - throw error; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.IndexedDbUndefined) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - else { - if (errCallBack) { - errCallBack(JsStore.Status.LastError); - } - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - switch (CompSymbol) { - case JsStore.Occurence.Any: - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - if (SymbolIndex(CompValue) < value.length - 1) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (CompareValue <= value) { - Status = false; - } - ; - break; - //less than - case '<': - if (CompareValue >= value) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - var CompareValue = rowValue[Column]; - if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) { - Status = false; - } - else { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.checkAndModifyValues = function (callBack) { - var That = this, checkInternal = function (value) { - if (value) { - That.checkAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - callBack(); - } - }; - checkInternal(this.Query.Values[this.ValuesIndex++]); - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(this.Query.Values[That.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - if (!_this.Query.SkipExtraCheck) { - _this.checkAndModifyValues(function () { - That.insertData(); - }); - } - else { - _this.insertData(); - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.SendResultFlag = true; - _this.Sorted = false; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, skipOrPush = function () { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - }; - if (That.Results.length != That.LimitRecord && Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - skipOrPush(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(); - } - Cursor.continue(); - } - }; - }; - _this.executeSkip = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, skipOrPush = function () { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - skipOrPush(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(); - } - Cursor.continue(); - } - }; - }; - _this.executeLimit = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeSimple = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - else if (this.SendResultFlag) { - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (!That.CheckFlag && this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag && this.OnSuccess != null) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, updateValueInternal = function () { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - updateValueInternal(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - updateValueInternal(); - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var updateValueInternal = function () { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - updateValueInternal(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - updateValueInternal(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.In); - var That = _this; - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionTimeout; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - deleteValue(); - } - else if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag) { - deleteValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - if (JsStore.EnableLog) { - console.log("request executing : " + FirstRequest.Name); - } - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.IndexedDbUndefined, - LastError: 'Your browser doesnot support IndexedDb' - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.IndexedDbUndefined, - LastError: 'IndexedDb is blocked' - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore-1.1.5.js.map \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.5/JsStore-1.1.5.js.map b/Dist/V 1.1/V 1.1.5/JsStore-1.1.5.js.map deleted file mode 100644 index 9f04dc87..00000000 --- a/Dist/V 1.1/V 1.1.5/JsStore-1.1.5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.1.5.js","sourceRoot":"","sources":["../License.ts","../JsStore/Script/enums.ts","../JsStore/Script/interfaces.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/HelperLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.1.5 - 14/09/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n IndexedDbUndefined = \"indexeddb_undefined\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipExtraCheck: boolean\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n }\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n}","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function) {\r\n if (Status.ConStatus != ConnectionStatus.IndexedDbUndefined) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n else {\r\n if (errCallBack) {\r\n errCallBack(JsStore.Status.LastError);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n\r\n\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase())\r\n switch (CompSymbol) {\r\n case Occurence.Any: if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First: if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default: if (SymbolIndex(CompValue) < value.length - 1) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (CompareValue <= value) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (CompareValue >= value) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n }\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n var CompareValue = rowValue[Column];\r\n if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) {\r\n Status = false;\r\n }\r\n else {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n else {\r\n break;\r\n }\r\n\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private checkAndModifyValues = function (callBack) {\r\n var That = this,\r\n checkInternal = function (value) {\r\n if (value) {\r\n That.checkAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n callBack();\r\n }\r\n };\r\n checkInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(this.Query.Values[That.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n if (!this.Query.SkipExtraCheck) {\r\n this.checkAndModifyValues(function () {\r\n That.insertData();\r\n });\r\n }\r\n else {\r\n this.insertData();\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the value based on defined schema and modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n SendResultFlag: Boolean = true;\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CheckFlag = false;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n skipOrPush = function () {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n skipOrPush = function () {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n else if (this.SendResultFlag) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n }\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (!That.CheckFlag && this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag && this.OnSuccess != null) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex,{ TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n updateValueInternal = function () {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var updateValueInternal = function () {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n updateValueInternal();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n var That = this;\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionTimeout;\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n deleteValue();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n deleteValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + FirstRequest.Name)\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.IndexedDbUndefined,\r\n LastError: 'Your browser doesnot support IndexedDb'\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.IndexedDbUndefined,\r\n LastError: 'IndexedDb is blocked'\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();"]} \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.5/JsStore-1.1.5.min.js b/Dist/V 1.1/V 1.1.5/JsStore-1.1.5.min.js deleted file mode 100644 index 52a349db..00000000 --- a/Dist/V 1.1/V 1.1.5/JsStore-1.1.5.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.1.5 - 14/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.IndexedDbUndefined="indexeddb_undefined"}(e.ConnectionStatus||(e.ConnectionStatus={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.throwError=function(e){throw e}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n){var r={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:r.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:r.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:r.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:r.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:r.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:r.Message="No value supplied";break;case e.ErrorType.InvalidOp:r.Message="Invalid Op Value '"+n.Op+"'";break;case e.ErrorType.ColumnNotExist:r.Message="Column '"+n.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:r.Message="Null value is not allowed for column '"+n.ColumnName+"'";break;case e.ErrorType.BadDataType:r.Message="Supplied value for column '"+n.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:r.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:r.Message="Table '"+n.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:r.Message="Database '"+n.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return r},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n,r){if(e.Status.ConStatus!=e.ConnectionStatus.IndexedDbUndefined){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})}else r&&r(e.Status.LastError)},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0},e.disableLog=function(){e.EnableLog=!1}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(t,n){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+n),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:en.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.onErrorOccured=function(t,n){if(void 0===n&&(n=!1),1==++this.ErrorCount&&null!=this.OnError){if(n)this.OnError(t);else{var r={Name:t.target.error.name,Message:t.target.error.message};this.OnError(r)}e.EnableLog&&console.error(r)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,n){switch(t.name){case"NotFoundError":var r=e.Utils.getError(e.ErrorType.TableNotExist,n);e.throwError(r);default:console.error(t)}},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;var u=t[o];if("string"==typeof s&&s!=u)r=!1;else for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),i=o.indexOf(u.toLowerCase()),s){case e.Occurence.Any:i<0&&(r=!1);break;case e.Occurence.First:(i>0||i<0)&&(r=!1);break;default:i(u)":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":s<=t&&(r=!1);break;case"<":s>=t&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],i)}}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=[],u=indexedDB.open(t.ActiveDataBase.Name,n);u.onerror=function(e){null!=o&&o(e.target.error)},u.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=r&&r(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},u.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),i(n,e)):e.RequireCreation&&i(n,e)})};var i=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}s.push(n.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.checkAndModifyValues=function(e){var t=this,n=function(r){r?t.checkAndModifyValue(r,function(){t.ErrorOccured?t.onErrorOccured(t.Error,!0):n(t.Query.Values[t.ValuesIndex++])}):e()};n(this.Query.Values[this.ValuesIndex++])},u.insertData=function(){var e=this,n=this.Query.Return,r=function(t){if(t){var o=e.ObjectStore.add(t);o.onerror=function(t){e.onErrorOccured(t)},o.onsuccess=function(o){n?e.ValuesAffected.push(t):++e.RowAffected,r(e.Query.Values[e.ValuesIndex++])}}};e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},r(this.Query.Values[e.ValuesIndex++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;var i=u;if(u.Table=u.getTable(r.Into),u.Table)u.Query.SkipExtraCheck?u.insertData():u.checkAndModifyValues(function(){i.insertData()});else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r.prototype.checkAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)},l=function(){c.NotNull&&e.isNull(n[c.Name])?a(e.ErrorType.NullValue,{ColumnName:c.Name}):c.DataType&&typeof n[c.Name]!=c.DataType&&a(e.ErrorType.BadDataType,{ColumnName:c.Name}),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),l()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,l()):l()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=r&&r()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(e.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(e.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){Array.isArray(n.Values)?new t.Insert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.SendResultFlag=!0,t.Sorted=!1,t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By)if(n.ObjectStore.indexNames.contains(this.Query.Order.By)){var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else{var o=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(o)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.CheckFlag=!1,n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result,o=function(){0==e?t.Results.push(r.value):--e};t.Results.length!=t.LimitRecord&&r&&(!t.CheckFlag&&t.filterOnOccurence(r.value)?o():t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&o(),r.continue())}},n.executeSkip=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result,o=function(){0==e?t.Results.push(r.value):--e};r&&(!t.CheckFlag&&t.filterOnOccurence(r.value)?o():t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&o(),r.continue())}},n.executeLimit=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(!e.CheckFlag&&e.filterOnOccurence(n.value)?e.Results.push(n.value):e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(!e.CheckFlag&&e.filterOnOccurence(n.value)?e.Results.push(n.value):e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.CheckFlag?o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value):o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.CheckFlag?o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value):o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess&&this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess&&this.OnSuccess(this.Results)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.SkipRecord=s.Query.Skip,s.LimitRecord=s.Query.Limit;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionCompleted,s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var n=this.ObjectStore.openCursor();n.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r=this;if(t=n?t[n]:t,!r.CheckFlag&&this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,n));o.onsuccess=function(){r.ResultCount=o.result},o.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else{var s=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n));s.onsuccess=function(e){var t=e.target.result;t&&(r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())},s.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&null!=this.OnSuccess&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){var r=n.target.result;r&&(r.update(t.updateValue(e.Query.Set,r.value)),++e.RowAffected,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o=this;this.CompValue=n.toLowerCase(),this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var n=e.target.result,r=function(){n.update(t.updateValue(o.Query.Set,n.value)),++o.RowAffected};n&&(!o.CheckFlag&&o.filterOnOccurence(n.value)?r():o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&r(),n.continue())}},r}return __extends(r,n),r}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.executeRequest=function(e,n,r){var o,s=this;n=r?n[r]:n,(o=this.ObjectStore.index(e).openCursor(this.getKeyRange(n,r))).onsuccess=function(e){var n=e.target.result;if(n){var r=function(){n.update(t.updateValue(s.Query.Set,n.value)),++s.RowAffected};s.CheckFlag?s.checkForWhereConditionMatch(n.value)&&r():r(),n.continue()}},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},r.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},r}return __extends(r,n),r}(t.Like);t.Where=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{u=s;if(s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e,s.OnSuccess=r,s.Transaction=t.DbConnection.transaction([e.In],"readwrite"),s.ObjectStore=s.Transaction.objectStore(e.In);var u=s;s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionTimeout,void 0==e.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){var r=this.getTable(n),o=this;if(r){var s=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)};r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){!function(t){if(n.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:n.Name}),n.DataType){var r=typeof t;if(r!=n.DataType)if("object"!=r)s(e.ErrorType.BadDataType,{ColumnName:n.Name});else{var o=["+","-","*","/"];for(var u in t){o.indexOf(u)<0&&s(e.ErrorType.BadDataType,{ColumnName:n.Name});break}}}}(t[n.Name])}return!0})}else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n});e.throwError(u)}},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result,n=function(){t.delete(),++r.RowAffected};t&&(!r.CheckFlag&&r.filterOnOccurence(t.value)?n():r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&n(),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result,n=function(){t.delete(),++o.RowAffected};t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){u.onTransactionCompleted()},s.Transaction.onerror=function(e){u.onErrorOccured(e)},void 0==n.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(t){this.RequestQueue.push(t),e.EnableLog&&console.log("request pushed:"+t.Name),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],n={Name:t.Name,Query:t.Query};e.EnableLog&&console.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished : "+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var n=this.getScriptUrl();n&&n.length>0?(e.WorkerInstance=new Worker(n),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){void 0===n&&(n=null);var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.IndexedDbUndefined,LastError:"Your browser doesnot support IndexedDb"}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.IndexedDbUndefined,LastError:"IndexedDb is blocked"}),null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName,function(){r.checkConnectionAndExecuteLogic(n)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.6/JsStore-1.1.6.d.ts b/Dist/V 1.1/V 1.1.6/JsStore-1.1.6.d.ts deleted file mode 100644 index f9deeed8..00000000 --- a/Dist/V 1.1/V 1.1.6/JsStore-1.1.6.d.ts +++ /dev/null @@ -1,849 +0,0 @@ -/** JsStore.js - v1.1.6 - 19/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - IndexedDbUndefined = "indexeddb_undefined", - IndexedDbBlocked = "indexeddb_blocked", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - UnableToStart = "unable_to_start", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipExtraCheck: boolean; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus; - var throwError: (error: any) => never; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private checkAndModifyValues; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - SendResultFlag: Boolean; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CheckFlag: boolean; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - createDb(dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function): this; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb(onSuccess: Function, onError?: Function): this; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count(query: ICount, onSuccess?: Function, onError?: Function): this; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.1/V 1.1.6/JsStore-1.1.6.js b/Dist/V 1.1/V 1.1.6/JsStore-1.1.6.js deleted file mode 100644 index 160705ae..00000000 --- a/Dist/V 1.1/V 1.1.6/JsStore-1.1.6.js +++ /dev/null @@ -1,3580 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.1.6 - 19/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - ErrorType["IndexedDbUndefined"] = "indexeddb_undefined"; - ErrorType["IndexedDbBlocked"] = "indexeddb_blocked"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["UnableToStart"] = "unable_to_start"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }; - JsStore.throwError = function (error) { - throw error; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - else { - if (errCallBack) { - var Error = { - Name: JsStore.Status.LastError, - Message: '' - }; - switch (Error.Name) { - case JsStore.ErrorType.IndexedDbBlocked: - Error.Message = "IndexedDB is blocked"; - break; - case JsStore.ErrorType.IndexedDbUndefined: - Error.Message = "IndexedDB is not supported"; - break; - } - errCallBack(Error); - } - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - switch (CompSymbol) { - case JsStore.Occurence.Any: - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - if (SymbolIndex(CompValue) < value.length - 1) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (CompareValue <= value) { - Status = false; - } - ; - break; - //less than - case '<': - if (CompareValue >= value) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - var CompareValue = rowValue[Column]; - if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) { - Status = false; - } - else { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.checkAndModifyValues = function (callBack) { - var That = this, checkInternal = function (value) { - if (value) { - That.checkAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - callBack(); - } - }; - checkInternal(this.Query.Values[this.ValuesIndex++]); - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(this.Query.Values[That.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - if (!_this.Query.SkipExtraCheck) { - _this.checkAndModifyValues(function () { - That.insertData(); - }); - } - else { - _this.insertData(); - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.SendResultFlag = true; - _this.Sorted = false; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, skipOrPush = function () { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - }; - if (That.Results.length != That.LimitRecord && Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - skipOrPush(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(); - } - Cursor.continue(); - } - }; - }; - _this.executeSkip = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, skipOrPush = function () { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - skipOrPush(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(); - } - Cursor.continue(); - } - }; - }; - _this.executeLimit = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeSimple = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - else if (this.SendResultFlag) { - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (!That.CheckFlag && this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag && this.OnSuccess != null) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, updateValueInternal = function () { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - updateValueInternal(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - updateValueInternal(); - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var updateValueInternal = function () { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - updateValueInternal(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - updateValueInternal(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.In); - var That = _this; - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionTimeout; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - deleteValue(); - } - else if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag) { - deleteValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'string') { - this.executeRequest(Column, Value); - } - else { - this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false; - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - if (JsStore.EnableLog) { - console.log("request executing : " + FirstRequest.Name); - } - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbUndefined - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbBlocked, - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore-1.1.6.js.map \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.6/JsStore-1.1.6.js.map b/Dist/V 1.1/V 1.1.6/JsStore-1.1.6.js.map deleted file mode 100644 index 2f7d2951..00000000 --- a/Dist/V 1.1/V 1.1.6/JsStore-1.1.6.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.1.6.js","sourceRoot":"","sources":["../License.ts","../JsStore/Script/enums.ts","../JsStore/Script/interfaces.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/HelperLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.1.6 - 19/09/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipExtraCheck: boolean\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n }\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n}","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function) {\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n else {\r\n if (errCallBack) {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n\r\n\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase())\r\n switch (CompSymbol) {\r\n case Occurence.Any: if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First: if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default: if (SymbolIndex(CompValue) < value.length - 1) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (CompareValue <= value) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (CompareValue >= value) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n }\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n var CompareValue = rowValue[Column];\r\n if (typeof ColumnValue == 'string' && ColumnValue != CompareValue) {\r\n Status = false;\r\n }\r\n else {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n else {\r\n break;\r\n }\r\n\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private checkAndModifyValues = function (callBack) {\r\n var That = this,\r\n checkInternal = function (value) {\r\n if (value) {\r\n That.checkAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n callBack();\r\n }\r\n };\r\n checkInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(this.Query.Values[That.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n if (!this.Query.SkipExtraCheck) {\r\n this.checkAndModifyValues(function () {\r\n That.insertData();\r\n });\r\n }\r\n else {\r\n this.insertData();\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the value based on defined schema and modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n SendResultFlag: Boolean = true;\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CheckFlag = false;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n skipOrPush = function () {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n skipOrPush = function () {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n else if (this.SendResultFlag) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n }\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (!That.CheckFlag && this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag && this.OnSuccess != null) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex,{ TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n updateValueInternal = function () {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var updateValueInternal = function () {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n updateValueInternal();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n var That = this;\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionTimeout;\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n deleteValue();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n deleteValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'string') {\r\n this.executeRequest(Column, Value);\r\n }\r\n else {\r\n this.CheckFlag = Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1 ? true : false;\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + FirstRequest.Name)\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();"]} \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.6/JsStore-1.1.6.min.js b/Dist/V 1.1/V 1.1.6/JsStore-1.1.6.min.js deleted file mode 100644 index 91d1f6e4..00000000 --- a/Dist/V 1.1/V 1.1.6/JsStore-1.1.6.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.1.6 - 19/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.throwError=function(e){throw e}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n){var r={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:r.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:r.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:r.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:r.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:r.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:r.Message="No value supplied";break;case e.ErrorType.InvalidOp:r.Message="Invalid Op Value '"+n.Op+"'";break;case e.ErrorType.ColumnNotExist:r.Message="Column '"+n.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:r.Message="Null value is not allowed for column '"+n.ColumnName+"'";break;case e.ErrorType.BadDataType:r.Message="Supplied value for column '"+n.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:r.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:r.Message="Table '"+n.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:r.Message="Database '"+n.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return r},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n,r){if(e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})}else if(r){var o={Name:e.Status.LastError,Message:""};switch(o.Name){case e.ErrorType.IndexedDbBlocked:o.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:o.Message="IndexedDB is not supported"}r(o)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0},e.disableLog=function(){e.EnableLog=!1}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(t,n){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+n),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:en.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.onErrorOccured=function(t,n){if(void 0===n&&(n=!1),1==++this.ErrorCount&&null!=this.OnError){if(n)this.OnError(t);else{var r={Name:t.target.error.name,Message:t.target.error.message};this.OnError(r)}e.EnableLog&&console.error(r)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,n){switch(t.name){case"NotFoundError":var r=e.Utils.getError(e.ErrorType.TableNotExist,n);e.throwError(r);default:console.error(t)}},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;var u=t[o];if("string"==typeof s&&s!=u)r=!1;else for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),i=o.indexOf(u.toLowerCase()),s){case e.Occurence.Any:i<0&&(r=!1);break;case e.Occurence.First:(i>0||i<0)&&(r=!1);break;default:i(u)":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":s<=t&&(r=!1);break;case"<":s>=t&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],i)}}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=[],u=indexedDB.open(t.ActiveDataBase.Name,n);u.onerror=function(e){null!=o&&o(e.target.error)},u.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=r&&r(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},u.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),i(n,e)):e.RequireCreation&&i(n,e)})};var i=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}s.push(n.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.checkAndModifyValues=function(e){var t=this,n=function(r){r?t.checkAndModifyValue(r,function(){t.ErrorOccured?t.onErrorOccured(t.Error,!0):n(t.Query.Values[t.ValuesIndex++])}):e()};n(this.Query.Values[this.ValuesIndex++])},u.insertData=function(){var e=this,n=this.Query.Return,r=function(t){if(t){var o=e.ObjectStore.add(t);o.onerror=function(t){e.onErrorOccured(t)},o.onsuccess=function(o){n?e.ValuesAffected.push(t):++e.RowAffected,r(e.Query.Values[e.ValuesIndex++])}}};e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},r(this.Query.Values[e.ValuesIndex++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;var i=u;if(u.Table=u.getTable(r.Into),u.Table)u.Query.SkipExtraCheck?u.insertData():u.checkAndModifyValues(function(){i.insertData()});else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r.prototype.checkAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)},l=function(){c.NotNull&&e.isNull(n[c.Name])?a(e.ErrorType.NullValue,{ColumnName:c.Name}):c.DataType&&typeof n[c.Name]!=c.DataType&&a(e.ErrorType.BadDataType,{ColumnName:c.Name}),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),l()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,l()):l()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=r&&r()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(e.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(e.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){Array.isArray(n.Values)?new t.Insert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.SendResultFlag=!0,t.Sorted=!1,t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By)if(n.ObjectStore.indexNames.contains(this.Query.Order.By)){var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else{var o=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(o)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.CheckFlag=!1,n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result,o=function(){0==e?t.Results.push(r.value):--e};t.Results.length!=t.LimitRecord&&r&&(!t.CheckFlag&&t.filterOnOccurence(r.value)?o():t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&o(),r.continue())}},n.executeSkip=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result,o=function(){0==e?t.Results.push(r.value):--e};r&&(!t.CheckFlag&&t.filterOnOccurence(r.value)?o():t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&o(),r.continue())}},n.executeLimit=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(!e.CheckFlag&&e.filterOnOccurence(n.value)?e.Results.push(n.value):e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(!e.CheckFlag&&e.filterOnOccurence(n.value)?e.Results.push(n.value):e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.CheckFlag?o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value):o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.CheckFlag?o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value):o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess&&this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess&&this.OnSuccess(this.Results)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.SkipRecord=s.Query.Skip,s.LimitRecord=s.Query.Limit;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionCompleted,s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var n=this.ObjectStore.openCursor();n.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r=this;if(t=n?t[n]:t,!r.CheckFlag&&this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,n));o.onsuccess=function(){r.ResultCount=o.result},o.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else{var s=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n));s.onsuccess=function(e){var t=e.target.result;t&&(r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())},s.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&null!=this.OnSuccess&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){var r=n.target.result;r&&(r.update(t.updateValue(e.Query.Set,r.value)),++e.RowAffected,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o=this;this.CompValue=n.toLowerCase(),this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var n=e.target.result,r=function(){n.update(t.updateValue(o.Query.Set,n.value)),++o.RowAffected};n&&(!o.CheckFlag&&o.filterOnOccurence(n.value)?r():o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&r(),n.continue())}},r}return __extends(r,n),r}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.executeRequest=function(e,n,r){var o,s=this;n=r?n[r]:n,(o=this.ObjectStore.index(e).openCursor(this.getKeyRange(n,r))).onsuccess=function(e){var n=e.target.result;if(n){var r=function(){n.update(t.updateValue(s.Query.Set,n.value)),++s.RowAffected};s.CheckFlag?s.checkForWhereConditionMatch(n.value)&&r():r(),n.continue()}},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},r.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},r}return __extends(r,n),r}(t.Like);t.Where=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{u=s;if(s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e,s.OnSuccess=r,s.Transaction=t.DbConnection.transaction([e.In],"readwrite"),s.ObjectStore=s.Transaction.objectStore(e.In);var u=s;s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionTimeout,void 0==e.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){var r=this.getTable(n),o=this;if(r){var s=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)};r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){!function(t){if(n.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:n.Name}),n.DataType){var r=typeof t;if(r!=n.DataType)if("object"!=r)s(e.ErrorType.BadDataType,{ColumnName:n.Name});else{var o=["+","-","*","/"];for(var u in t){o.indexOf(u)<0&&s(e.ErrorType.BadDataType,{ColumnName:n.Name});break}}}}(t[n.Name])}return!0})}else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n});e.throwError(u)}},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result,n=function(){t.delete(),++r.RowAffected};t&&(!r.CheckFlag&&r.filterOnOccurence(t.value)?n():r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&n(),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result,n=function(){t.delete(),++o.RowAffected};t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("string"==typeof n)this.executeRequest(t,n);else if(this.CheckFlag=Object.keys(n).length>1||Object.keys(this.Query.Where).length>1,n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){u.onTransactionCompleted()},s.Transaction.onerror=function(e){u.onErrorOccured(e)},void 0==n.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(t){this.RequestQueue.push(t),e.EnableLog&&console.log("request pushed:"+t.Name),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],n={Name:t.Name,Query:t.Query};e.EnableLog&&console.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished : "+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var n=this.getScriptUrl();n&&n.length>0?(e.WorkerInstance=new Worker(n),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){void 0===n&&(n=null);var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName,function(){r.checkConnectionAndExecuteLogic(n)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.7/JsStore-1.1.7.d.ts b/Dist/V 1.1/V 1.1.7/JsStore-1.1.7.d.ts deleted file mode 100644 index 8db3679b..00000000 --- a/Dist/V 1.1/V 1.1.7/JsStore-1.1.7.d.ts +++ /dev/null @@ -1,849 +0,0 @@ -/** JsStore.js - v1.1.7 - 20/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - IndexedDbUndefined = "indexeddb_undefined", - IndexedDbBlocked = "indexeddb_blocked", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - UnableToStart = "unable_to_start", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipExtraCheck: boolean; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus; - var throwError: (error: any) => never; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private checkAndModifyValues; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - SendResultFlag: Boolean; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CheckFlag: boolean; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeRequest; - protected executeWhereLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - createDb(dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function): this; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb(onSuccess: Function, onError?: Function): this; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count(query: ICount, onSuccess?: Function, onError?: Function): this; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.1/V 1.1.7/JsStore-1.1.7.js b/Dist/V 1.1/V 1.1.7/JsStore-1.1.7.js deleted file mode 100644 index d2e9f2c8..00000000 --- a/Dist/V 1.1/V 1.1.7/JsStore-1.1.7.js +++ /dev/null @@ -1,3595 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.1.7 - 20/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - ErrorType["IndexedDbUndefined"] = "indexeddb_undefined"; - ErrorType["IndexedDbBlocked"] = "indexeddb_blocked"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["UnableToStart"] = "unable_to_start"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }; - JsStore.throwError = function (error) { - throw error; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - else { - if (errCallBack) { - var Error = { - Name: JsStore.Status.LastError, - Message: '' - }; - switch (Error.Name) { - case JsStore.ErrorType.IndexedDbBlocked: - Error.Message = "IndexedDB is blocked"; - break; - case JsStore.ErrorType.IndexedDbUndefined: - Error.Message = "IndexedDB is not supported"; - break; - } - errCallBack(Error); - } - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - switch (CompSymbol) { - case JsStore.Occurence.Any: - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - if (SymbolIndex(CompValue) < value.length - 1) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (CompareValue <= value) { - Status = false; - } - ; - break; - //less than - case '<': - if (CompareValue >= value) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }, checkOr = function (column, value) { - var OrData = Where[column]; - for (var prop in OrData) { - if (value[prop] && value[prop] == OrData[prop]) { - //skip everything when this matches - return true; - } - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - if (typeof ColumnValue == 'object') { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - else { - var CompareValue = rowValue[Column]; - if (ColumnValue != CompareValue) { - Status = false; - break; - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.checkAndModifyValues = function (callBack) { - var That = this, checkInternal = function (value) { - if (value) { - That.checkAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - callBack(); - } - }; - checkInternal(this.Query.Values[this.ValuesIndex++]); - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(this.Query.Values[That.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - if (!_this.Query.SkipExtraCheck) { - _this.checkAndModifyValues(function () { - That.insertData(); - }); - } - else { - _this.insertData(); - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.SendResultFlag = true; - _this.Sorted = false; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, skipOrPush = function () { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - }; - if (That.Results.length != That.LimitRecord && Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - skipOrPush(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(); - } - Cursor.continue(); - } - }; - }; - _this.executeSkip = function () { - var Skip = this.SkipRecord, That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, skipOrPush = function () { - if (Skip == 0) { - That.Results.push(Cursor.value); - } - else { - --Skip; - } - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - skipOrPush(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(); - } - Cursor.continue(); - } - }; - }; - _this.executeLimit = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeSimple = function () { - var That = this; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag) { - That.Results.push(Cursor.value); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length || Object.keys(this.Query.Where).length); - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length); - this.executeRequest(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - else if (this.SendResultFlag) { - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (!That.CheckFlag && this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length || Object.keys(this.Query.Where).length); - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length); - this.executeRequest(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag && this.OnSuccess != null) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.executeWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, updateValueInternal = function () { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - updateValueInternal(); - } - else if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - updateValueInternal(); - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - var updateValueInternal = function () { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - }; - if (!That.CheckFlag) { - updateValueInternal(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - updateValueInternal(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length || Object.keys(this.Query.Where).length); - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length); - this.executeRequest(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.In); - var That = _this; - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionTimeout; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - 1) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - deleteValue(); - } - else if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeRequest = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result, deleteValue = function () { - Cursor.delete(); - ++That.RowAffected; - }; - if (Cursor) { - if (!That.CheckFlag) { - deleteValue(); - } - else if (That.checkForWhereConditionMatch(Cursor.value)) { - deleteValue(); - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - _this.executeWhereLogic = function () { - for (var Column in this.Query.Where) { - if (!this.ErrorOccured) { - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length || Object.keys(this.Query.Where).length); - if (Value.Like) { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - else if (Value['In']) { - for (var i = 0; i < Value['In'].length; i++) { - this.executeRequest(Column, Value['In'][i]); - } - } - else if (Value['-']) { - this.executeRequest(Column, Value, '-'); - } - else if (Value['>']) { - this.executeRequest(Column, Value, '>'); - } - else if (Value['<']) { - this.executeRequest(Column, Value, '<'); - } - else if (Value['>=']) { - this.executeRequest(Column, Value, '>='); - } - else if (Value['<=']) { - this.executeRequest(Column, Value, '<='); - } - else { - this.executeRequest(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length); - this.executeRequest(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - } - break; - } - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.executeWhereLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - if (JsStore.EnableLog) { - console.log("request executing : " + FirstRequest.Name); - } - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbUndefined - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbBlocked, - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore-1.1.7.js.map \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.7/JsStore-1.1.7.js.map b/Dist/V 1.1/V 1.1.7/JsStore-1.1.7.js.map deleted file mode 100644 index 88cdd466..00000000 --- a/Dist/V 1.1/V 1.1.7/JsStore-1.1.7.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.1.7.js","sourceRoot":"","sources":["../License.ts","../JsStore/Script/enums.ts","../JsStore/Script/interfaces.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/HelperLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.1.7 - 20/09/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipExtraCheck: boolean\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n }\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n}","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function) {\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n else {\r\n if (errCallBack) {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n\r\n\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase())\r\n switch (CompSymbol) {\r\n case Occurence.Any: if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First: if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default: if (SymbolIndex(CompValue) < value.length - 1) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (CompareValue <= value) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (CompareValue >= value) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n },\r\n checkOr = function (column, value) {\r\n var OrData = Where[column];\r\n for (var prop in OrData) {\r\n if (value[prop] && value[prop] == OrData[prop]) {\r\n //skip everything when this matches\r\n return true;\r\n }\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n // case 'Or': checkOr(Column, rowValue[Column]); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private checkAndModifyValues = function (callBack) {\r\n var That = this,\r\n checkInternal = function (value) {\r\n if (value) {\r\n That.checkAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n callBack();\r\n }\r\n };\r\n checkInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(this.Query.Values[That.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n if (!this.Query.SkipExtraCheck) {\r\n this.checkAndModifyValues(function () {\r\n That.insertData();\r\n });\r\n }\r\n else {\r\n this.insertData();\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the value based on defined schema and modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n SendResultFlag: Boolean = true;\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CheckFlag = false;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n skipOrPush = function () {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Skip = this.SkipRecord,\r\n That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n skipOrPush = function () {\r\n if (Skip == 0) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n That.Results.push(Cursor.value);\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length || Object.keys(this.Query.Where).length);\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length);\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n else if (this.SendResultFlag) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n }\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (!That.CheckFlag && this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length || Object.keys(this.Query.Where).length);\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length);\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag && this.OnSuccess != null) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.executeWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex,{ TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n updateValueInternal = function () {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n var updateValueInternal = function () {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n if (!That.CheckFlag) {\r\n updateValueInternal();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n updateValueInternal();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length || Object.keys(this.Query.Where).length);\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length);\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n var That = this;\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionTimeout;\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - 1) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n deleteValue();\r\n }\r\n else if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeRequest = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result,\r\n deleteValue = function () {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n };\r\n if (Cursor) {\r\n if (!That.CheckFlag) {\r\n deleteValue();\r\n }\r\n else if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n deleteValue();\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n protected executeWhereLogic = function () {\r\n for (var Column in this.Query.Where) {\r\n if (!this.ErrorOccured) {\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length || Object.keys(this.Query.Where).length);\r\n if (Value.Like) {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }\r\n else if (Value['In']) {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeRequest(Column, Value['In'][i])\r\n }\r\n }\r\n else if (Value['-']) {\r\n this.executeRequest(Column, Value, '-');\r\n }\r\n else if (Value['>']) {\r\n this.executeRequest(Column, Value, '>');\r\n }\r\n else if (Value['<']) {\r\n this.executeRequest(Column, Value, '<');\r\n }\r\n else if (Value['>=']) {\r\n this.executeRequest(Column, Value, '>=');\r\n }\r\n else if (Value['<=']) {\r\n this.executeRequest(Column, Value, '<=');\r\n }\r\n else {\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length);\r\n this.executeRequest(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.executeWhereLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + FirstRequest.Name)\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();"]} \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.7/JsStore-1.1.7.min.js b/Dist/V 1.1/V 1.1.7/JsStore-1.1.7.min.js deleted file mode 100644 index 02e9ba76..00000000 --- a/Dist/V 1.1/V 1.1.7/JsStore-1.1.7.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.1.7 - 20/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.throwError=function(e){throw e}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n){var r={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:r.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:r.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:r.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:r.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:r.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:r.Message="No value supplied";break;case e.ErrorType.InvalidOp:r.Message="Invalid Op Value '"+n.Op+"'";break;case e.ErrorType.ColumnNotExist:r.Message="Column '"+n.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:r.Message="Null value is not allowed for column '"+n.ColumnName+"'";break;case e.ErrorType.BadDataType:r.Message="Supplied value for column '"+n.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:r.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:r.Message="Table '"+n.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:r.Message="Database '"+n.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return r},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n,r){if(e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})}else if(r){var o={Name:e.Status.LastError,Message:""};switch(o.Name){case e.ErrorType.IndexedDbBlocked:o.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:o.Message="IndexedDB is not supported"}r(o)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0},e.disableLog=function(){e.EnableLog=!1}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(t,n){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+n),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:en.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.onErrorOccured=function(t,n){if(void 0===n&&(n=!1),1==++this.ErrorCount&&null!=this.OnError){if(n)this.OnError(t);else{var r={Name:t.target.error.name,Message:t.target.error.message};this.OnError(r)}e.EnableLog&&console.error(r)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,n){switch(t.name){case"NotFoundError":var r=e.Utils.getError(e.ErrorType.TableNotExist,n);e.throwError(r);default:console.error(t)}},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;if("object"==typeof s)for(var u in s){if(!r)break;switch(u){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),i=o.indexOf(u.toLowerCase()),s){case e.Occurence.Any:i<0&&(r=!1);break;case e.Occurence.First:(i>0||i<0)&&(r=!1);break;default:i(u)":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":s<=t&&(r=!1);break;case"<":s>=t&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],u)}}else if(s!=t[o]){r=!1;break}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=[],u=indexedDB.open(t.ActiveDataBase.Name,n);u.onerror=function(e){null!=o&&o(e.target.error)},u.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=r&&r(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},u.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),i(n,e)):e.RequireCreation&&i(n,e)})};var i=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}s.push(n.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.checkAndModifyValues=function(e){var t=this,n=function(r){r?t.checkAndModifyValue(r,function(){t.ErrorOccured?t.onErrorOccured(t.Error,!0):n(t.Query.Values[t.ValuesIndex++])}):e()};n(this.Query.Values[this.ValuesIndex++])},u.insertData=function(){var e=this,n=this.Query.Return,r=function(t){if(t){var o=e.ObjectStore.add(t);o.onerror=function(t){e.onErrorOccured(t)},o.onsuccess=function(o){n?e.ValuesAffected.push(t):++e.RowAffected,r(e.Query.Values[e.ValuesIndex++])}}};e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},r(this.Query.Values[e.ValuesIndex++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;var i=u;if(u.Table=u.getTable(r.Into),u.Table)u.Query.SkipExtraCheck?u.insertData():u.checkAndModifyValues(function(){i.insertData()});else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r.prototype.checkAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)},l=function(){c.NotNull&&e.isNull(n[c.Name])?a(e.ErrorType.NullValue,{ColumnName:c.Name}):c.DataType&&typeof n[c.Name]!=c.DataType&&a(e.ErrorType.BadDataType,{ColumnName:c.Name}),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),l()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,l()):l()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=r&&r()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(e.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(e.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){Array.isArray(n.Values)?new t.Insert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.SendResultFlag=!0,t.Sorted=!1,t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By)if(n.ObjectStore.indexNames.contains(this.Query.Order.By)){var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else{var o=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(o)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.CheckFlag=!1,n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result,o=function(){0==e?t.Results.push(r.value):--e};t.Results.length!=t.LimitRecord&&r&&(!t.CheckFlag&&t.filterOnOccurence(r.value)?o():t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&o(),r.continue())}},n.executeSkip=function(){var e=this.SkipRecord,t=this;this.CursorOpenRequest.onsuccess=function(n){var r=n.target.result,o=function(){0==e?t.Results.push(r.value):--e};r&&(!t.CheckFlag&&t.filterOnOccurence(r.value)?o():t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&o(),r.continue())}},n.executeLimit=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(!e.CheckFlag&&e.filterOnOccurence(n.value)?e.Results.push(n.value):e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(!e.CheckFlag&&e.filterOnOccurence(n.value)?e.Results.push(n.value):e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.CheckFlag?o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value):o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.CheckFlag?o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value):o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value):o.Results.push(t.value),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("object"==typeof n)if(this.CheckFlag=Boolean(Object.keys(n).length||Object.keys(this.Query.Where).length),n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n);else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length),this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess&&this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess&&this.OnSuccess(this.Results)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.SkipRecord=s.Query.Skip,s.LimitRecord=s.Query.Limit;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionCompleted,s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var n=this.ObjectStore.openCursor();n.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r=this;if(t=n?t[n]:t,!r.CheckFlag&&this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,n));o.onsuccess=function(){r.ResultCount=o.result},o.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else{var s=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n));s.onsuccess=function(e){var t=e.target.result;t&&(r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())},s.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("object"==typeof n)if(this.CheckFlag=Boolean(Object.keys(n).length||Object.keys(this.Query.Where).length),n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n);else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length),this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&null!=this.OnSuccess&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.executeWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){var r=n.target.result;r&&(r.update(t.updateValue(e.Query.Set,r.value)),++e.RowAffected,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o=this;this.CompValue=n.toLowerCase(),this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var n=e.target.result,r=function(){n.update(t.updateValue(o.Query.Set,n.value)),++o.RowAffected};n&&(!o.CheckFlag&&o.filterOnOccurence(n.value)?r():o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&r(),n.continue())}},r}return __extends(r,n),r}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.executeRequest=function(e,n,r){var o,s=this;n=r?n[r]:n,(o=this.ObjectStore.index(e).openCursor(this.getKeyRange(n,r))).onsuccess=function(e){var n=e.target.result;if(n){var r=function(){n.update(t.updateValue(s.Query.Set,n.value)),++s.RowAffected};s.CheckFlag?s.checkForWhereConditionMatch(n.value)&&r():r(),n.continue()}},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},r.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("object"==typeof n)if(this.CheckFlag=Boolean(Object.keys(n).length||Object.keys(this.Query.Where).length),n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n);else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length),this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},r}return __extends(r,n),r}(t.Like);t.Where=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{u=s;if(s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e,s.OnSuccess=r,s.Transaction=t.DbConnection.transaction([e.In],"readwrite"),s.ObjectStore=s.Transaction.objectStore(e.In);var u=s;s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionTimeout,void 0==e.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){var r=this.getTable(n),o=this;if(r){var s=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)};r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){!function(t){if(n.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:n.Name}),n.DataType){var r=typeof t;if(r!=n.DataType)if("object"!=r)s(e.ErrorType.BadDataType,{ColumnName:n.Name});else{var o=["+","-","*","/"];for(var u in t){o.indexOf(u)<0&&s(e.ErrorType.BadDataType,{ColumnName:n.Name});break}}}}(t[n.Name])}return!0})}else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n});e.throwError(u)}},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-1&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result,n=function(){t.delete(),++r.RowAffected};t&&(!r.CheckFlag&&r.filterOnOccurence(t.value)?n():r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&n(),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeRequest=function(e,t,n){var r,o=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){var t=e.target.result,n=function(){t.delete(),++o.RowAffected};t&&(o.CheckFlag?o.checkForWhereConditionMatch(t.value)&&n():n(),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},n.executeWhereLogic=function(){for(var t in this.Query.Where){if(!this.ErrorOccured)if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("object"==typeof n)if(this.CheckFlag=Boolean(Object.keys(n).length||Object.keys(this.Query.Where).length),n.Like){var r=n.Like.split("%");r[1]?r.length>2?this.executeLikeLogic(t,r[1],e.Occurence.Any):this.executeLikeLogic(t,r[1],e.Occurence.Last):this.executeLikeLogic(t,r[0],e.Occurence.First)}else if(n.In)for(var o=0;o"]?this.executeRequest(t,n,">"):n["<"]?this.executeRequest(t,n,"<"):n[">="]?this.executeRequest(t,n,">="):n["<="]?this.executeRequest(t,n,"<="):this.executeRequest(t,n);else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length),this.executeRequest(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error);break}},n}return __extends(n,t),n}(t.Like);t.Where=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){u.onTransactionCompleted()},s.Transaction.onerror=function(e){u.onErrorOccured(e)},void 0==n.Where?s.executeWhereUndefinedLogic():s.executeWhereLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(t){this.RequestQueue.push(t),e.EnableLog&&console.log("request pushed:"+t.Name),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],n={Name:t.Name,Query:t.Query};e.EnableLog&&console.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished : "+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var n=this.getScriptUrl();n&&n.length>0?(e.WorkerInstance=new Worker(n),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){void 0===n&&(n=null);var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName,function(){r.checkConnectionAndExecuteLogic(n)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.8/JsStore-1.1.8.d.ts b/Dist/V 1.1/V 1.1.8/JsStore-1.1.8.d.ts deleted file mode 100644 index 3b3e18e6..00000000 --- a/Dist/V 1.1/V 1.1.8/JsStore-1.1.8.d.ts +++ /dev/null @@ -1,851 +0,0 @@ -/** JsStore.js - v1.1.8 - 23/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - IndexedDbUndefined = "indexeddb_undefined", - IndexedDbBlocked = "indexeddb_blocked", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - UnableToStart = "unable_to_start", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipExtraCheck: boolean; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus; - var throwError: (error: any) => never; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - protected getObjectFirstKey: (value: any) => string; - protected goToWhereLogic: () => void; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private checkAndModifyValues; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - SendResultFlag: Boolean; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - SendResultFlag: Boolean; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - createDb(dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function): this; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb(onSuccess: Function, onError?: Function): this; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count(query: ICount, onSuccess?: Function, onError?: Function): this; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.1/V 1.1.8/JsStore-1.1.8.js b/Dist/V 1.1/V 1.1.8/JsStore-1.1.8.js deleted file mode 100644 index 75467f7a..00000000 --- a/Dist/V 1.1/V 1.1.8/JsStore-1.1.8.js +++ /dev/null @@ -1,3550 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.1.8 - 23/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - ErrorType["IndexedDbUndefined"] = "indexeddb_undefined"; - ErrorType["IndexedDbBlocked"] = "indexeddb_blocked"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["UnableToStart"] = "unable_to_start"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }; - JsStore.throwError = function (error) { - throw error; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - else { - if (errCallBack) { - var Error = { - Name: JsStore.Status.LastError, - Message: '' - }; - switch (Error.Name) { - case JsStore.ErrorType.IndexedDbBlocked: - Error.Message = "IndexedDB is blocked"; - break; - case JsStore.ErrorType.IndexedDbUndefined: - Error.Message = "IndexedDB is not supported"; - break; - } - errCallBack(Error); - } - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - this.getObjectFirstKey = function (value) { - for (var key in value) { - return key; - } - }; - this.goToWhereLogic = function () { - var Column = this.getObjectFirstKey(this.Query.Where); - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1); - var Key = this.getObjectFirstKey(Value); - switch (Key) { - case 'Like': - { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - ; - break; - case 'In': - { - for (var i = 0; i < Value['In'].length; i++) { - this.executeWhereLogic(Column, Value['In'][i]); - } - } - ; - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - this.executeWhereLogic(Column, Value, Key); - break; - default: this.executeWhereLogic(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1); - this.executeWhereLogic(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - switch (CompSymbol) { - case JsStore.Occurence.Any: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - SymbolIndex = value.lastIndexOf(CompValue.toLowerCase()); - if (SymbolIndex < value.length - CompValue.length) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (value <= CompareValue) { - Status = false; - } - ; - break; - //less than - case '<': - if (value >= CompareValue) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }, checkOr = function (column, value) { - var OrData = Where[column]; - for (var prop in OrData) { - if (value[prop] && value[prop] == OrData[prop]) { - //skip everything when this matches - return true; - } - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - if (typeof ColumnValue == 'object') { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - else { - var CompareValue = rowValue[Column]; - if (ColumnValue != CompareValue) { - Status = false; - break; - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.checkAndModifyValues = function (callBack) { - var That = this, checkInternal = function (value) { - if (value) { - That.checkAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - callBack(); - } - }; - checkInternal(this.Query.Values[this.ValuesIndex++]); - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(this.Query.Values[That.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - if (!_this.Query.SkipExtraCheck) { - _this.checkAndModifyValues(function () { - That.insertData(); - }); - } - else { - _this.insertData(); - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.SendResultFlag = true; - _this.Sorted = false; - _this.CheckFlag = false; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSkip = function () { - var Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLimit = function () { - var That = this; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSimple = function () { - var That = this; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeSkip = function () { - var RecordSkipped = false; - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeLimit = function () { - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }, executeSimple = function () { - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - else if (this.SendResultFlag) { - if (this.OnSuccess) { - this.OnSuccess(this.Results); - } - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (!That.CheckFlag && this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag && this.OnSuccess != null) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where != undefined) { - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.In); - var That = _this; - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionTimeout; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.goToWhereLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.SendResultFlag = true; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where == undefined) { - _this.executeWhereUndefinedLogic(); - } - else { - _this.goToWhereLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - if (JsStore.EnableLog) { - console.log("request executing : " + FirstRequest.Name); - } - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - /** - * creates DataBase - * - * @param {IDataBase} dataBase - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @returns - * - * @memberOf Main - */ - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbUndefined - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbBlocked, - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore-1.1.8.js.map \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.8/JsStore-1.1.8.js.map b/Dist/V 1.1/V 1.1.8/JsStore-1.1.8.js.map deleted file mode 100644 index d650673b..00000000 --- a/Dist/V 1.1/V 1.1.8/JsStore-1.1.8.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.1.8.js","sourceRoot":"","sources":["../License.ts","../JsStore/Script/enums.ts","../JsStore/Script/interfaces.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/HelperLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.1.8 - 23/09/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipExtraCheck: boolean\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n }\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n}","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function) {\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n else {\r\n if (errCallBack) {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n\r\n\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n },\r\n checkOr = function (column, value) {\r\n var OrData = Where[column];\r\n for (var prop in OrData) {\r\n if (value[prop] && value[prop] == OrData[prop]) {\r\n //skip everything when this matches\r\n return true;\r\n }\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n // case 'Or': checkOr(Column, rowValue[Column]); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = this.getObjectFirstKey(this.Query.Where);\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = this.getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In': {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeWhereLogic(Column, Value['In'][i])\r\n }\r\n }; break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private checkAndModifyValues = function (callBack) {\r\n var That = this,\r\n checkInternal = function (value) {\r\n if (value) {\r\n That.checkAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n callBack();\r\n }\r\n };\r\n checkInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(this.Query.Values[That.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n if (!this.Query.SkipExtraCheck) {\r\n this.checkAndModifyValues(function () {\r\n That.insertData();\r\n });\r\n }\r\n else {\r\n this.insertData();\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the value based on defined schema and modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n SendResultFlag: Boolean = true;\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n else if (this.SendResultFlag) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n }\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (!That.CheckFlag && this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag && this.OnSuccess != null) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where != undefined) {\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n var That = this;\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionTimeout;\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n SendResultFlag: Boolean = true;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where == undefined) {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n else {\r\n this.goToWhereLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + FirstRequest.Name)\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();"]} \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.8/JsStore-1.1.8.min.js b/Dist/V 1.1/V 1.1.8/JsStore-1.1.8.min.js deleted file mode 100644 index f260efc8..00000000 --- a/Dist/V 1.1/V 1.1.8/JsStore-1.1.8.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.1.8 - 23/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.throwError=function(e){throw e}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n){var r={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:r.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:r.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:r.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:r.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:r.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:r.Message="No value supplied";break;case e.ErrorType.InvalidOp:r.Message="Invalid Op Value '"+n.Op+"'";break;case e.ErrorType.ColumnNotExist:r.Message="Column '"+n.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:r.Message="Null value is not allowed for column '"+n.ColumnName+"'";break;case e.ErrorType.BadDataType:r.Message="Supplied value for column '"+n.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:r.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:r.Message="Table '"+n.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:r.Message="Database '"+n.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return r},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n,r){if(e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})}else if(r){var o={Name:e.Status.LastError,Message:""};switch(o.Name){case e.ErrorType.IndexedDbBlocked:o.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:o.Message="IndexedDB is not supported"}r(o)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0},e.disableLog=function(){e.EnableLog=!1}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(t,n){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+n),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:en.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.onErrorOccured=function(t,n){if(void 0===n&&(n=!1),1==++this.ErrorCount&&null!=this.OnError){if(n)this.OnError(t);else{var r={Name:t.target.error.name,Message:t.target.error.message};this.OnError(r)}e.EnableLog&&console.error(r)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,n){switch(t.name){case"NotFoundError":var r=e.Utils.getError(e.ErrorType.TableNotExist,n);e.throwError(r);default:console.error(t)}},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n},this.getObjectFirstKey=function(e){for(var t in e)return t},this.goToWhereLogic=function(){var t=this.getObjectFirstKey(this.Query.Where);if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("object"==typeof n){this.CheckFlag=Boolean(Object.keys(n).length>1||Object.keys(this.Query.Where).length>1);var r=this.getObjectFirstKey(n);switch(r){case"Like":var o=n.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":for(var s=0;s":case"<":case">=":case"<=":this.executeWhereLogic(t,n,r);break;default:this.executeWhereLogic(t,n)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;if("object"==typeof s)for(var u in s){if(!r)break;switch(u){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(i=o.indexOf(u.toLowerCase()))<0&&(r=!1);break;case e.Occurence.First:((i=o.indexOf(u.toLowerCase()))>0||i<0)&&(r=!1);break;default:(i=o.lastIndexOf(u.toLowerCase()))":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":t<=s&&(r=!1);break;case"<":t>=s&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],u)}}else if(s!=t[o]){r=!1;break}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=[],u=indexedDB.open(t.ActiveDataBase.Name,n);u.onerror=function(e){null!=o&&o(e.target.error)},u.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=r&&r(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},u.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),i(n,e)):e.RequireCreation&&i(n,e)})};var i=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}s.push(n.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.checkAndModifyValues=function(e){var t=this,n=function(r){r?t.checkAndModifyValue(r,function(){t.ErrorOccured?t.onErrorOccured(t.Error,!0):n(t.Query.Values[t.ValuesIndex++])}):e()};n(this.Query.Values[this.ValuesIndex++])},u.insertData=function(){var e=this,n=this.Query.Return,r=function(t){if(t){var o=e.ObjectStore.add(t);o.onerror=function(t){e.onErrorOccured(t)},o.onsuccess=function(o){n?e.ValuesAffected.push(t):++e.RowAffected,r(e.Query.Values[e.ValuesIndex++])}}};e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},r(this.Query.Values[e.ValuesIndex++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;var i=u;if(u.Table=u.getTable(r.Into),u.Table)u.Query.SkipExtraCheck?u.insertData():u.checkAndModifyValues(function(){i.insertData()});else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r.prototype.checkAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)},l=function(){c.NotNull&&e.isNull(n[c.Name])?a(e.ErrorType.NullValue,{ColumnName:c.Name}):c.DataType&&typeof n[c.Name]!=c.DataType&&a(e.ErrorType.BadDataType,{ColumnName:c.Name}),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),l()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,l()):l()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=r&&r()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(e.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(e.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){Array.isArray(n.Values)?new t.Insert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.SendResultFlag=!0,t.Sorted=!1,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By)if(n.ObjectStore.indexNames.contains(this.Query.Order.By)){var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else{var o=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(o)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=this.SkipRecord,t=this,n=function(n){0==e?t.Results.push(n):--e};t.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var r=e.target.result;t.Results.length!=t.LimitRecord&&r&&(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&n(r.value),r.continue())}:this.CursorOpenRequest.onsuccess=function(e){var r=e.target.result;t.Results.length!=t.LimitRecord&&r&&(t.filterOnOccurence(r.value)&&n(r.value),r.continue())}},n.executeSkip=function(){var e=this.SkipRecord,t=this,n=function(n){0==e?t.Results.push(n):--e};t.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var r=e.target.result;r&&(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&n(r.value),r.continue())}:this.CursorOpenRequest.onsuccess=function(e){var r=e.target.result;r&&(t.filterOnOccurence(r.value)&&n(r.value),r.continue())}},n.executeLimit=function(){var e=this;e.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}:this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(e.filterOnOccurence(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;e.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}:this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(e.filterOnOccurence(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),this.SkipRecord&&this.LimitRecord?function(){var e=!1;o.CheckFlag?r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}:r.onsuccess=function(t){var n=t.target.result;n&&(e&&o.Results.length!=o.LimitRecord?(o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;o.CheckFlag?r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.checkForWhereConditionMatch(n.value)&&o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}:r.onsuccess=function(t){var n=t.target.result;n&&(e?(o.Results.push(n.value),n.continue()):(e=!0,n.advance(o.SkipRecord)))}}():this.LimitRecord?o.CheckFlag?r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&o.checkForWhereConditionMatch(t.value)&&(o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&o.Results.length!=o.LimitRecord&&(o.Results.push(t.value),t.continue())}:o.CheckFlag?r.onsuccess=function(e){var t=e.target.result;t&&(o.checkForWhereConditionMatch(t.value)&&o.Results.push(t.value),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(o.Results.push(t.value),t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},f=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess&&this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess&&this.OnSuccess(this.Results)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.SkipRecord=s.Query.Skip,s.LimitRecord=s.Query.Limit;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionCompleted,s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.goToWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var n=this.ObjectStore.openCursor();n.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},r.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}:this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r=this;if(t=n?t[n]:t,!r.CheckFlag&&this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,n));o.onsuccess=function(){r.ResultCount=o.result},o.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else{var s=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n));s.onsuccess=function(e){var t=e.target.result;t&&(r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())},s.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&null!=this.OnSuccess&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o;try{s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.ObjectStore=s.Transaction.objectStore(n.From),void 0!=n.Where?s.goToWhereLogic():s.executeWhereUndefinedLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){var r=n.target.result;r&&(r.update(t.updateValue(e.Query.Set,r.value)),++e.RowAffected,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o=this;this.CompValue=n.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var n=e.target.result;n&&(o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&(n.update(t.updateValue(o.Query.Set,n.value)),++o.RowAffected),n.continue())}:this.CursorOpenRequest.onsuccess=function(e){var n=e.target.result;n&&(o.filterOnOccurence(n.value)&&(n.update(t.updateValue(o.Query.Set,n.value)),++o.RowAffected),n.continue())}},r}return __extends(r,n),r}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereLogic=function(t,n,r){var o,s=this;n=r?n[r]:n,o=this.ObjectStore.index(t).openCursor(this.getKeyRange(n,r)),s.CheckFlag?o.onsuccess=function(t){var n=t.target.result;n&&(s.checkForWhereConditionMatch(n.value)&&(n.update(e.updateValue(s.Query.Set,n.value)),++s.RowAffected),n.continue())}:o.onsuccess=function(t){var n=t.target.result;n&&(n.update(e.updateValue(s.Query.Set,n.value)),++s.RowAffected,n.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},n}return __extends(n,t),n}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{u=s;if(s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e,s.OnSuccess=r,s.Transaction=t.DbConnection.transaction([e.In],"readwrite"),s.ObjectStore=s.Transaction.objectStore(e.In);var u=s;s.Transaction.oncomplete=function(e){u.onTransactionCompleted()},s.Transaction.ontimeout=u.onTransactionTimeout,void 0==e.Where?s.executeWhereUndefinedLogic():s.goToWhereLogic()}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){var r=this.getTable(n),o=this;if(r){var s=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)};r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){!function(t){if(n.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:n.Name}),n.DataType){var r=typeof t;if(r!=n.DataType)if("object"!=r)s(e.ErrorType.BadDataType,{ColumnName:n.Name});else{var o=["+","-","*","/"];for(var u in t){o.indexOf(u)<0&&s(e.ErrorType.BadDataType,{ColumnName:n.Name});break}}}}(t[n.Name])}return!0})}else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n});e.throwError(u)}},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.SendResultFlag=!0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},r.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&(t.delete(),++r.RowAffected),t.continue())}:this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(!r.CheckFlag&&r.filterOnOccurence(t.value)&&(t.delete(),++r.RowAffected),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),o.CheckFlag?r.onsuccess=function(e){var t=e.target.result;t&&(o.checkForWhereConditionMatch(t.value)&&(t.delete(),++o.RowAffected),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(t.delete(),++o.RowAffected,t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)};try{var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){u.onTransactionCompleted()},s.Transaction.onerror=function(e){u.onErrorOccured(e)},void 0==n.Where?s.executeWhereUndefinedLogic():s.goToWhereLogic()}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(t){this.RequestQueue.push(t),e.EnableLog&&console.log("request pushed:"+t.Name),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],n={Name:t.Name,Query:t.Query};e.EnableLog&&console.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished : "+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var n=this.getScriptUrl();n&&n.length>0?(e.WorkerInstance=new Worker(n),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){void 0===n&&(n=null);var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName,function(){r.checkConnectionAndExecuteLogic(n)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.9/JsStore-1.1.9.d.ts b/Dist/V 1.1/V 1.1.9/JsStore-1.1.9.d.ts deleted file mode 100644 index c02eb772..00000000 --- a/Dist/V 1.1/V 1.1.9/JsStore-1.1.9.d.ts +++ /dev/null @@ -1,703 +0,0 @@ -/** JsStore.js - v1.1.9 - 26/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - IndexedDbUndefined = "indexeddb_undefined", - IndexedDbBlocked = "indexeddb_blocked", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - UnableToStart = "unable_to_start", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipExtraCheck: boolean; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus, TempResults: Array; - var throwError: (error: any) => never; - var getObjectFirstKey: (value: any) => string; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - static setDbType: () => void; - } -} -declare module JsStore { - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack: Function) => void; - var getDbVersion: (dbName: string, callback: Function) => void; - var getDbSchema: (dbName: string, callback: Function) => void; - var isNull: (value: any) => boolean; - var enableLog: () => void; - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - SendResultFlag: Boolean; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - protected getObjectSecondKey: (value: any) => string; - protected goToWhereLogic: () => void; - protected getPrimaryKey: (tableName: any) => any; - private getKeyPath; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private checkAndModifyValues; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - private checkAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - protected removeDuplicates: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private orQuerySuccess; - private executeOrLogic; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - protected onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - createDb(dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function): this; - dropDb(onSuccess: Function, onError?: Function): this; - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - count(query: ICount, onSuccess?: Function, onError?: Function): this; - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - var init: () => void; - var get: (key: string, onSuccess: Function, onError?: Function) => any; - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} diff --git a/Dist/V 1.1/V 1.1.9/JsStore-1.1.9.js b/Dist/V 1.1/V 1.1.9/JsStore-1.1.9.js deleted file mode 100644 index 0209ace3..00000000 --- a/Dist/V 1.1/V 1.1.9/JsStore-1.1.9.js +++ /dev/null @@ -1,3537 +0,0 @@ -/** JsStore.js - v1.1.9 - 26/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - ErrorType["IndexedDbUndefined"] = "indexeddb_undefined"; - ErrorType["IndexedDbBlocked"] = "indexeddb_blocked"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["UnableToStart"] = "unable_to_start"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }, JsStore.TempResults = []; - JsStore.throwError = function (error) { - throw error; - }; - JsStore.getObjectFirstKey = function (value) { - for (var key in value) { - return key; - } - return null; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - else { - if (errCallBack) { - var Error = { - Name: JsStore.Status.LastError, - Message: '' - }; - switch (Error.Name) { - case JsStore.ErrorType.IndexedDbBlocked: - Error.Message = "IndexedDB is blocked"; - break; - case JsStore.ErrorType.IndexedDbUndefined: - Error.Message = "IndexedDB is not supported"; - break; - } - errCallBack(Error); - } - } - }; - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - JsStore.enableLog = function () { - JsStore.EnableLog = true; - }; - JsStore.disableLog = function () { - JsStore.EnableLog = false; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.SendResultFlag = true; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - this.getObjectSecondKey = function (value) { - var IsSecond = false; - for (var key in value) { - if (IsSecond) { - return key; - } - else { - IsSecond = true; - } - } - }; - this.goToWhereLogic = function () { - var Column = JsStore.getObjectFirstKey(this.Query.Where); - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1); - var Key = JsStore.getObjectFirstKey(Value); - switch (Key) { - case 'Like': - { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - ; - break; - case 'In': - { - for (var i = 0; i < Value['In'].length; i++) { - this.executeWhereLogic(Column, Value['In'][i]); - } - } - ; - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - this.executeWhereLogic(Column, Value, Key); - break; - default: this.executeWhereLogic(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1); - this.executeWhereLogic(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - }; - this.getPrimaryKey = function (tableName) { - var PrimaryKey = this.getTable(tableName).PrimaryKey; - return PrimaryKey ? PrimaryKey : this.getKeyPath(); - }; - this.getKeyPath = function (tableName) { - var Transaction = Business.DbConnection.transaction([tableName], "readonly"), ObjectStore = Transaction.objectStore(tableName); - return ObjectStore.keyPath; - }; - } - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - switch (CompSymbol) { - case JsStore.Occurence.Any: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - SymbolIndex = value.lastIndexOf(CompValue.toLowerCase()); - if (SymbolIndex < value.length - CompValue.length) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - case '>': - if (value <= CompareValue) { - Status = false; - } - ; - break; - case '<': - if (value >= CompareValue) { - Status = false; - } - ; - break; - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - if (typeof ColumnValue == 'object') { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - else { - var CompareValue = rowValue[Column]; - if (ColumnValue != CompareValue) { - Status = false; - break; - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = (function () { - function DropDb(name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("delete database is in progress"); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - if (onSuccess != null) { - onSuccess(); - } - }; - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - } - }; - _this.checkAndModifyValues = function (callBack) { - var That = this, checkInternal = function (value) { - if (value) { - That.checkAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - callBack(); - } - }; - checkInternal(this.Query.Values[this.ValuesIndex++]); - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - if (IsReturn) { - That.ValuesAffected.push(value); - } - else { - ++That.RowAffected; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - }; - } - }; - That.ValuesIndex = 0; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(this.Query.Values[That.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - if (!_this.Query.SkipExtraCheck) { - _this.checkAndModifyValues(function () { - That.insertData(); - }); - } - else { - _this.insertData(); - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - Insert.prototype.checkAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - if (column.NotNull && JsStore.isNull(value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Closed) { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.Sorted = false; - _this.CheckFlag = false; - _this.removeDuplicates = function () { - var Datas = this.Results; - this.Results = undefined; - var Key = this.getPrimaryKey(this.Query.From); - var lookupObject = {}; - for (var i in Datas) { - lookupObject[Datas[i][Key]] = Datas[i]; - } - Datas = []; - for (i in lookupObject) { - Datas.push(lookupObject[i]); - } - this.Results = Datas; - }; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSkip = function () { - var Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLimit = function () { - var That = this; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSimple = function () { - var That = this; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest, Cursor, executeSkipAndLimit = function () { - var RecordSkipped = false; - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeSkip = function () { - var RecordSkipped = false; - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeLimit = function () { - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }, executeSimple = function () { - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - results.forEach(function (value, index) { - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - doJoin(Item, value, i); - } - }); - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - this.OnSuccess(this.Results); - } - else if (this.SendResultFlag) { - this.OnSuccess(this.Results); - } - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.orQuerySuccess = function () { - this.Results = this.OrInfo.Results; - this.OrInfo.Results = undefined; - this.removeDuplicates(); - this.OrInfo.OnSucess(this.Results); - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess, - Results: [] - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - this.OrInfo.Results = this.OrInfo.Results.concat(this.Results); - if (!this.Query.Limit || (this.Query.Limit > this.OrInfo.Results.length)) { - this.Results = []; - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.orQuerySuccess(); - } - } - else { - this.orQuerySuccess(); - } - }; - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (!That.CheckFlag && this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - That.ObjectStore = That.Transaction.objectStore(query.From); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where != undefined) { - if (query.Where.Or) { - new Business.Select.Instance(query, function (results) { - That.ResultCount = results.length; - That.onTransactionCompleted(); - }, _this.OnError); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.OnSuccess != null) { - this.OnSuccess(this.RowAffected); - } - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.In); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - var That = this; - new Business.Select.Instance({ - From: this.Query.In, - Where: this.Query.Where - }, function (results) { - var Key = That.getPrimaryKey(That.Query.In), InQuery = [], WhereQry = {}; - results.forEach(function (value) { - InQuery.push(value[Key]); - }); - WhereQry[Key] = { In: InQuery }; - That.createtransactionForOrLogic({ - In: That.Query.In, - Where: WhereQry, - Set: That.Query.Set - }); - }, this.OnError); - }; - try { - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - var That = _this; - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(query.In); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - if (suppliedValue) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - } - else { - this.ErrorOccured = true; - this.OnSuccess(0); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (!That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (!That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.OrInfo.OnSucess(this.RowAffected); - } - }; - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - this.RequestQueue.push(request); - if (JsStore.EnableLog) { - console.log("request pushed:" + request.Name); - } - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - if (JsStore.EnableLog) { - console.log("request executing : " + FirstRequest.Name); - } - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - JsStore.Utils.setDbType(); - _this.createWorker(); - } - else { - JsStore.WorkerInstance.terminate(); - _this.createWorker(); - } - if (dbName != null) { - _this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName - }); - } - return _this; - } - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -(!self.alert); -{ - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name:" + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; -} -var KeyStore; -(function (KeyStore) { - var Utils = (function () { - function Utils() { - } - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbUndefined - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbBlocked, - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -KeyStore.init(); -//# sourceMappingURL=JsStore-1.1.9.js.map \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.9/JsStore-1.1.9.js.map b/Dist/V 1.1/V 1.1.9/JsStore-1.1.9.js.map deleted file mode 100644 index bd14a0bf..00000000 --- a/Dist/V 1.1/V 1.1.9/JsStore-1.1.9.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.1.9.js","sourceRoot":"","sources":["../License.ts","../JsStore/Script/enums.ts","../JsStore/Script/interfaces.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/HelperLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.1.9 - 26/09/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipExtraCheck: boolean\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n}","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function) {\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n else {\r\n if (errCallBack) {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n }\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In': {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeWhereLogic(Column, Value['In'][i])\r\n }\r\n }; break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"delete database is in progress\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n }\r\n\r\n private checkAndModifyValues = function (callBack) {\r\n var That = this,\r\n checkInternal = function (value) {\r\n if (value) {\r\n That.checkAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n callBack();\r\n }\r\n };\r\n checkInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n if (IsReturn) {\r\n That.ValuesAffected.push(value);\r\n }\r\n else {\r\n ++That.RowAffected;\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n }\r\n\r\n That.ValuesIndex = 0;\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(this.Query.Values[That.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n if (!this.Query.SkipExtraCheck) {\r\n this.checkAndModifyValues(function () {\r\n That.insertData();\r\n });\r\n }\r\n else {\r\n this.insertData();\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the value based on defined schema and modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var That = this;\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var That = this;\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n else if (this.SendResultFlag) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (!That.CheckFlag && this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n\r\n protected onTransactionCompleted = function () {\r\n if (this.OnSuccess != null) {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (!That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (!That.CheckFlag && That.filterOnOccurence(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) && That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (!That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n this.RequestQueue.push(request);\r\n if (EnableLog) {\r\n console.log(\"request pushed:\" + request.Name);\r\n }\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + FirstRequest.Name)\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n Utils.setDbType();\r\n this.createWorker();\r\n }\r\n else {\r\n WorkerInstance.terminate();\r\n this.createWorker();\r\n }\r\n if (dbName != null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {IDataBase} dataBase \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * \r\n * @memberOf Main\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","(!self.alert)\r\n{\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name:\" + e.data.Name);\r\n }\r\n var Request = e.data, IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n}\r\n\r\n","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n\r\nKeyStore.init();"]} \ No newline at end of file diff --git a/Dist/V 1.1/V 1.1.9/JsStore-1.1.9.min.js b/Dist/V 1.1/V 1.1.9/JsStore-1.1.9.min.js deleted file mode 100644 index 47e2676c..00000000 --- a/Dist/V 1.1/V 1.1.9/JsStore-1.1.9.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.1.9 - 26/09/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.TempResults=[],e.throwError=function(e){throw e},e.getObjectFirstKey=function(e){for(var t in e)return t;return null}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n){var r={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:r.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:r.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:r.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:r.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:r.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:r.Message="No value supplied";break;case e.ErrorType.InvalidOp:r.Message="Invalid Op Value '"+n.Op+"'";break;case e.ErrorType.ColumnNotExist:r.Message="Column '"+n.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:r.Message="Null value is not allowed for column '"+n.ColumnName+"'";break;case e.ErrorType.BadDataType:r.Message="Supplied value for column '"+n.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:r.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:r.Message="Table '"+n.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:r.Message="Database '"+n.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return r},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n,r){if(e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})}else if(r){var o={Name:e.Status.LastError,Message:""};switch(o.Name){case e.ErrorType.IndexedDbBlocked:o.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:o.Message="IndexedDB is not supported"}r(o)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0},e.disableLog=function(){e.EnableLog=!1}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(t,n){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+n),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:en.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.SendResultFlag=!0,this.onErrorOccured=function(t,n){if(void 0===n&&(n=!1),1==++this.ErrorCount&&null!=this.OnError){if(n)this.OnError(t);else{var r={Name:t.target.error.name,Message:t.target.error.message};this.OnError(r)}e.EnableLog&&console.error(r)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,n){switch(t.name){case"NotFoundError":var r=e.Utils.getError(e.ErrorType.TableNotExist,n);e.throwError(r);default:console.error(t)}},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n},this.getObjectSecondKey=function(e){var t=!1;for(var n in e){if(t)return n;t=!0}},this.goToWhereLogic=function(){var t=e.getObjectFirstKey(this.Query.Where);if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("object"==typeof n){this.CheckFlag=Boolean(Object.keys(n).length>1||Object.keys(this.Query.Where).length>1);var r=e.getObjectFirstKey(n);switch(r){case"Like":var o=n.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":for(var s=0;s":case"<":case">=":case"<=":this.executeWhereLogic(t,n,r);break;default:this.executeWhereLogic(t,n)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)},this.getPrimaryKey=function(e){var t=this.getTable(e).PrimaryKey;return t||this.getKeyPath()},this.getKeyPath=function(e){return t.DbConnection.transaction([e],"readonly").objectStore(e).keyPath}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;if("object"==typeof s)for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,i=o.length;s2?e.Occurence.Any:e.Occurence.Last):(i=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(u=o.indexOf(i.toLowerCase()))<0&&(r=!1);break;case e.Occurence.First:((u=o.indexOf(i.toLowerCase()))>0||u<0)&&(r=!1);break;default:(u=o.lastIndexOf(i.toLowerCase()))":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":t<=s&&(r=!1);break;case"<":t>=s&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],i)}}else if(s!=t[o]){r=!1;break}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=[],i=indexedDB.open(t.ActiveDataBase.Name,n);i.onerror=function(e){null!=o&&o(e.target.error)},i.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=i.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=r&&r(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},i.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),u(n,e)):e.RequireCreation&&u(n,e)})};var u=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}s.push(n.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("delete database is in progress")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),null!=r&&r()}}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var i=n.call(this)||this;i.ValuesAffected=[],i.ValuesIndex=0,i.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},i.checkAndModifyValues=function(e){var t=this,n=function(r){r?t.checkAndModifyValue(r,function(){t.ErrorOccured?t.onErrorOccured(t.Error,!0):n(t.Query.Values[t.ValuesIndex++])}):e()};n(this.Query.Values[this.ValuesIndex++])},i.insertData=function(){var e=this,n=this.Query.Return,r=function(t){if(t){var o=e.ObjectStore.add(t);o.onerror=function(t){e.onErrorOccured(t)},o.onsuccess=function(o){n?e.ValuesAffected.push(t):++e.RowAffected,r(e.Query.Values[e.ValuesIndex++])}}};e.ValuesIndex=0,e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},r(this.Query.Values[e.ValuesIndex++])};try{i.Query=r,i.OnSuccess=o,i.OnError=s;var u=i;if(i.Table=i.getTable(r.Into),i.Table)i.Query.SkipExtraCheck?i.insertData():i.checkAndModifyValues(function(){u.insertData()});else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(c)}}catch(e){i.onExceptionOccured(e,{TableName:r.Into})}return i}return __extends(r,n),r.prototype.checkAndModifyValue=function(n,r){var o=this,s=this.Table.Name,i=0,u=function(c){if(c){var a=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)},l=function(){c.NotNull&&e.isNull(n[c.Name])?a(e.ErrorType.NullValue,{ColumnName:c.Name}):c.DataType&&typeof n[c.Name]!=c.DataType&&a(e.ErrorType.BadDataType,{ColumnName:c.Name}),u(o.Table.Columns[i++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),l()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,l()):l()}else r()};u(o.Table.Columns[i++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=r&&r()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,i=s,u=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return u.onsuccess=function(t){i.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},u.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),"create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(e.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(e.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){Array.isArray(n.Values)?new t.Insert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var i=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):i()})},200)};i()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.Sorted=!1,t.CheckFlag=!1,t.removeDuplicates=function(){var e=this.Results;this.Results=void 0;var t=this.getPrimaryKey(this.Query.From),n={};for(var r in e)n[e[r][t]]=e[r];e=[];for(r in n)e.push(n[r]);this.Results=e},t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n=this;if(this.Query.Order&&this.Query.Order.By)if(n.ObjectStore.indexNames.contains(this.Query.Order.By)){var r=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,t=this.ObjectStore.index(n.Query.Order.By).openCursor(null,r)}else{var o=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(o)}else t=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;t.onsuccess=function(t){var r=t.target.result;r&&(e?(n.Results.push(r.value),r.continue()):(e=!0,r.advance(n.SkipRecord)))}}():this.LimitRecord?t.onsuccess=function(e){var t=e.target.result;t&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:t.onsuccess=function(e){var t=e.target.result;t&&(n.Results.push(t.value),t.continue())},t.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e=this.SkipRecord,t=this,n=function(n){0==e?t.Results.push(n):--e};t.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var r=e.target.result;t.Results.length!=t.LimitRecord&&r&&(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&n(r.value),r.continue())}:this.CursorOpenRequest.onsuccess=function(e){var r=e.target.result;t.Results.length!=t.LimitRecord&&r&&(t.filterOnOccurence(r.value)&&n(r.value),r.continue())}},n.executeSkip=function(){var e=this.SkipRecord,t=this,n=function(n){0==e?t.Results.push(n):--e};t.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var r=e.target.result;r&&(t.filterOnOccurence(r.value)&&t.checkForWhereConditionMatch(r.value)&&n(r.value),r.continue())}:this.CursorOpenRequest.onsuccess=function(e){var r=e.target.result;r&&(t.filterOnOccurence(r.value)&&n(r.value),r.continue())}},n.executeLimit=function(){var e=this;e.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}:this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;e.Results.length!=e.LimitRecord&&n&&(e.filterOnOccurence(n.value)&&e.Results.push(n.value),n.continue())}},n.executeSimple=function(){var e=this;e.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(e.filterOnOccurence(n.value)&&e.checkForWhereConditionMatch(n.value)&&e.Results.push(n.value),n.continue())}:this.CursorOpenRequest.onsuccess=function(t){var n=t.target.result;n&&(e.filterOnOccurence(n.value)&&e.Results.push(n.value),n.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.LimitRecord?s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&s.checkForWhereConditionMatch(o.value)&&(s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&(s.Results.push(o.value),o.continue())}:s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&(s.Results.push(o.value),o.continue())}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],i=0,u=(n.Column,o.Results),c=u.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[i]={},e==t[n.Column]){s[i][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(u=0;ur.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var i=n.call(this)||this;i.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess(this.Results)},i.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readonly"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},i.orQuerySuccess=function(){this.Results=this.OrInfo.Results,this.OrInfo.Results=void 0,this.removeDuplicates(),this.OrInfo.OnSucess(this.Results)},i.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess,Results:[]},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){if(this.OrInfo.Results=this.OrInfo.Results.concat(this.Results),!this.Query.Limit||this.Query.Limit>this.OrInfo.Results.length){this.Results=[];var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.orQuerySuccess()}else this.orQuerySuccess()}};var u=i;i.Query=r,i.OnSuccess=o,i.OnError=s,i.SkipRecord=i.Query.Skip,i.LimitRecord=i.Query.Limit;try{i.Transaction=t.DbConnection.transaction([r.From],"readonly"),i.Transaction.oncomplete=function(e){u.onTransactionCompleted()},i.Transaction.ontimeout=u.onTransactionCompleted,i.ObjectStore=i.Transaction.objectStore(r.From),r.Where?(r.Where.Or&&i.executeOrLogic(),i.goToWhereLogic()):i.executeWhereUndefinedLogic()}catch(e){i.onExceptionOccured(e,{TableName:r.From})}return i}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var n=this.ObjectStore.openCursor();n.onsuccess=function(t){var n=t.target.result;n&&(++e.ResultCount,n.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},r.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())}:this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&++r.ResultCount,t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r=this;if(t=n?t[n]:t,!r.CheckFlag&&this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,n));o.onsuccess=function(){r.ResultCount=o.result},o.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else{var s=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n));s.onsuccess=function(e){var t=e.target.result;t&&(r.checkForWhereConditionMatch(t.value)&&++r.ResultCount,t.continue())},s.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&this.OnSuccess(this.ResultCount)};var i=s;s.Query=n,s.OnSuccess=r,s.OnError=o;try{var u=function(){i.Transaction=e.DbConnection.transaction([n.From],"readonly"),i.ObjectStore=i.Transaction.objectStore(n.From),i.Transaction.oncomplete=function(e){i.onTransactionCompleted()},i.Transaction.ontimeout=i.onTransactionTimeout};void 0!=n.Where?n.Where.Or?new e.Select.Instance(n,function(e){i.ResultCount=e.length,i.onTransactionCompleted()},s.OnError):(u(),s.goToWhereLogic()):(u(),s.executeWhereUndefinedLogic())}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){var r=n.target.result;r&&(r.update(t.updateValue(e.Query.Set,r.value)),++e.RowAffected,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o=this;this.CompValue=n.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var n=e.target.result;n&&(o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&(n.update(t.updateValue(o.Query.Set,n.value)),++o.RowAffected),n.continue())}:this.CursorOpenRequest.onsuccess=function(e){var n=e.target.result;n&&(o.filterOnOccurence(n.value)&&(n.update(t.updateValue(o.Query.Set,n.value)),++o.RowAffected),n.continue())}},r}return __extends(r,n),r}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereLogic=function(t,n,r){var o,s=this;n=r?n[r]:n,o=this.ObjectStore.index(t).openCursor(this.getKeyRange(n,r)),s.CheckFlag?o.onsuccess=function(t){var n=t.target.result;n&&(s.checkForWhereConditionMatch(n.value)&&(n.update(e.updateValue(s.Query.Set,n.value)),++s.RowAffected),n.continue())}:o.onsuccess=function(t){var n=t.target.result;n&&(n.update(e.updateValue(s.Query.Set,n.value)),++s.RowAffected,n.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},n}return __extends(n,t),n}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){null!=this.OnSuccess&&this.OnSuccess(this.RowAffected)},s.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.In],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.In),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},s.executeOrLogic=function(){var e=this;new t.Select.Instance({From:this.Query.In,Where:this.Query.Where},function(t){var n=e.getPrimaryKey(e.Query.In),r=[],o={};t.forEach(function(e){r.push(e[n])}),o[n]={In:r},e.createtransactionForOrLogic({In:e.Query.In,Where:o,Set:e.Query.Set})},this.OnError)};try{if(s.OnSuccess=r,s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e;var i=s,u=function(){i.Transaction=t.DbConnection.transaction([e.In],"readwrite"),i.ObjectStore=i.Transaction.objectStore(e.In),i.Transaction.oncomplete=function(e){i.onTransactionCompleted()},i.Transaction.ontimeout=i.onTransactionTimeout};e.Where?e.Where.Or?s.executeOrLogic():(u(),s.goToWhereLogic()):(u(),s.executeWhereUndefinedLogic())}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){if(t){var r=this.getTable(n),o=this;if(r){var s=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)};r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){!function(t){if(n.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:n.Name}),n.DataType){var r=typeof t;if(r!=n.DataType)if("object"!=r)s(e.ErrorType.BadDataType,{ColumnName:n.Name});else{var o=["+","-","*","/"];for(var i in t){o.indexOf(i)<0&&s(e.ErrorType.BadDataType,{ColumnName:n.Name});break}}}}(t[n.Name])}return!0})}else{var i=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n});e.throwError(i)}}else this.ErrorOccured=!0,this.OnSuccess(0)},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this,t=this.ObjectStore.openCursor();t.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},r.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(r.filterOnOccurence(t.value)&&r.checkForWhereConditionMatch(t.value)&&(t.delete(),++r.RowAffected),t.continue())}:this.CursorOpenRequest.onsuccess=function(e){var t=e.target.result;t&&(!r.CheckFlag&&r.filterOnOccurence(t.value)&&(t.delete(),++r.RowAffected),t.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o=this;t=n?t[n]:t,r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),o.CheckFlag?r.onsuccess=function(e){var t=e.target.result;t&&(o.checkForWhereConditionMatch(t.value)&&(t.delete(),++o.RowAffected),t.continue())}:r.onsuccess=function(e){var t=e.target.result;t&&(t.delete(),++o.RowAffected,t.continue())},r.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var i=n.call(this)||this;i.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},i.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},i.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.OrInfo.OnSucess(this.RowAffected)}};try{var u=i;i.Query=r,i.OnSuccess=o,i.OnError=s,i.Transaction=t.DbConnection.transaction([r.From],"readwrite"),i.ObjectStore=i.Transaction.objectStore(r.From),i.Transaction.oncomplete=function(){u.onTransactionCompleted()},i.Transaction.onerror=function(e){u.onErrorOccured(e)},r.Where?(r.Where.Or&&i.executeOrLogic(),i.goToWhereLogic()):i.executeWhereUndefinedLogic()}catch(e){i.onExceptionOccured(e,{TableName:r.From})}return i}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(t){this.RequestQueue.push(t),e.EnableLog&&console.log("request pushed:"+t.Name),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode()},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],n={Name:t.Name,Query:t.Query};e.EnableLog&&console.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished : "+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var n=this.getScriptUrl();n&&n.length>0?(e.WorkerInstance=new Worker(n),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){void 0===n&&(n=null);var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.NotStarted?(e.Utils.setDbType(),r.createWorker()):(e.WorkerInstance.terminate(),r.createWorker()),null!=n&&r.prcoessExecutionOfCode({Name:"open_db",Query:n}),r}return __extends(n,t),n.prototype.createDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self.alert,self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name:"+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)};var KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var i=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(i.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var i=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(i.RowAffected)},s.Transaction.onerror=function(e){i.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var i=self.indexedDB.open(n,1);i.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},i.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=i.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},i.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName,function(){r.checkConnectionAndExecuteLogic(n)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={})),KeyStore.init(); \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.0/JsStore-1.2.0.d.ts b/Dist/V 1.2/V 1.2.0/JsStore-1.2.0.d.ts deleted file mode 100644 index 2b96f352..00000000 --- a/Dist/V 1.2/V 1.2.0/JsStore-1.2.0.d.ts +++ /dev/null @@ -1,884 +0,0 @@ -/** JsStore.js - v1.2 - 11/10/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - IndexedDbUndefined = "indexeddb_undefined", - IndexedDbBlocked = "indexeddb_blocked", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - UnableToStart = "unable_to_start", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipDataCheck: any; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus, TempResults: Array; - var throwError: (error: any) => never; - var getObjectFirstKey: (value: any) => string; -} -declare module JsStore { - interface IError { - Name: string; - Message: string; - } - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack?: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - SendResultFlag: Boolean; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - protected getObjectSecondKey: (value: any) => string; - protected goToWhereLogic: () => void; - protected getPrimaryKey: (tableName: any) => any; - private getKeyPath; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - deleteDb: (name: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private checkAndModifyValues; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class BulkInsert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private bulkinsertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private changeLogStatus; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - protected removeDuplicates: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private orQuerySuccess; - private executeOrLogic; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - protected onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - openDb(dbName: string, onSuccess?: Function, onError?: Function): this; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - createDb(dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function): this; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb(onSuccess: Function, onError?: Function): this; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select(query: ISelect, onSuccess?: Function, onError?: Function): this; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count(query: ICount, onSuccess?: Function, onError?: Function): this; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert(query: IInsert, onSuccess?: Function, onError?: Function): this; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update(query: IUpdate, onSuccess?: Function, onError?: Function): this; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete(query: IDelete, onSuccess?: Function, onError?: Function): this; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear(tableName: string, onSuccess?: Function, onError?: Function): this; - } -} -export = JsStore; \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.0/JsStore-1.2.0.js b/Dist/V 1.2/V 1.2.0/JsStore-1.2.0.js deleted file mode 100644 index f4c140f2..00000000 --- a/Dist/V 1.2/V 1.2.0/JsStore-1.2.0.js +++ /dev/null @@ -1,3865 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.2.0 - 11/10/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var KeyStore; -(function (KeyStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbUndefined - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = /** @class */ (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = /** @class */ (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = /** @class */ (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = /** @class */ (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbBlocked, - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - ErrorType["IndexedDbUndefined"] = "indexeddb_undefined"; - ErrorType["IndexedDbBlocked"] = "indexeddb_blocked"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["UnableToStart"] = "unable_to_start"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }, JsStore.TempResults = []; - JsStore.throwError = function (error) { - throw error; - }; - JsStore.getObjectFirstKey = function (value) { - for (var key in value) { - return key; - } - return null; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (errCallBack === void 0) { errCallBack = null; } - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - else { - if (errCallBack) { - var Error = { - Name: JsStore.Status.LastError, - Message: '' - }; - switch (Error.Name) { - case JsStore.ErrorType.IndexedDbBlocked: - Error.Message = "IndexedDB is blocked"; - break; - case JsStore.ErrorType.IndexedDbUndefined: - Error.Message = "IndexedDB is not supported"; - break; - } - errCallBack(Error); - } - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = /** @class */ (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = /** @class */ (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = /** @class */ (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.SendResultFlag = true; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - this.getObjectSecondKey = function (value) { - var IsSecond = false; - for (var key in value) { - if (IsSecond) { - return key; - } - else { - IsSecond = true; - } - } - }; - this.goToWhereLogic = function () { - var Column = JsStore.getObjectFirstKey(this.Query.Where); - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1); - var Key = JsStore.getObjectFirstKey(Value); - switch (Key) { - case 'Like': - { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - ; - break; - case 'In': - { - for (var i = 0; i < Value['In'].length; i++) { - this.executeWhereLogic(Column, Value['In'][i]); - } - } - ; - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - this.executeWhereLogic(Column, Value, Key); - break; - default: this.executeWhereLogic(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1); - this.executeWhereLogic(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - }; - this.getPrimaryKey = function (tableName) { - var PrimaryKey = this.getTable(tableName).PrimaryKey; - return PrimaryKey ? PrimaryKey : this.getKeyPath(); - }; - this.getKeyPath = function (tableName) { - var Transaction = Business.DbConnection.transaction([tableName], "readonly"), ObjectStore = Transaction.objectStore(tableName); - return ObjectStore.keyPath; - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - switch (CompSymbol) { - case JsStore.Occurence.Any: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - SymbolIndex = value.lastIndexOf(CompValue.toLowerCase()); - if (SymbolIndex < value.length - CompValue.length) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (value <= CompareValue) { - Status = false; - } - ; - break; - //less than - case '<': - if (value >= CompareValue) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - if (typeof ColumnValue == 'object') { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - else { - var CompareValue = rowValue[Column]; - if (ColumnValue != CompareValue) { - Status = false; - break; - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = /** @class */ (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = /** @class */ (function () { - function DropDb(name, onSuccess, onError) { - this.deleteDb = function (name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("database is blocked, cant be deleted right now."); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - onSuccess(); - }; - }; - var That = this; - Business.DbConnection.close(); - setTimeout(function () { - That.deleteDb(name, onSuccess, onError); - }, 100); - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = /** @class */ (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.checkAndModifyValues = function (callBack) { - var That = this, checkInternal = function (value) { - if (value) { - That.checkAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - That.ValuesIndex = 0; - callBack(); - } - }; - checkInternal(this.Query.Values[this.ValuesIndex++]); - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - if (IsReturn) { - AddResult.onsuccess = function (e) { - That.ValuesAffected.push(value); - }; - } - else { - AddResult.onsuccess = function (e) { - ++That.RowAffected; - }; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - } - }; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(this.Query.Values[That.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - if (_this.Query.SkipDataCheck) { - That.insertData(); - } - else { - _this.checkAndModifyValues(function () { - That.insertData(); - }); - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var BulkInsert = /** @class */ (function (_super) { - __extends(BulkInsert, _super); - function BulkInsert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.bulkinsertData = function () { - var That = this; - this.Transaction = Business.DbConnection.transaction([this.Query.Into], "readwrite"); - this.ObjectStore = this.Transaction.objectStore(this.Query.Into); - this.Transaction.oncomplete = function (e) { - That.OnSuccess(); - }; - this.Query.Values.forEach(function (value) { - That.ObjectStore.add(value); - }); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - _this.bulkinsertData(); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - return BulkInsert; - }(Business.Base)); - Business.BulkInsert = BulkInsert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = /** @class */ (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = /** @class */ (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - switch (request.Name) { - case 'create_db': - case 'open_db': - this.executeLogic(request); - break; - case 'change_log_status': - this.changeLogStatus(request); - default: - switch (JsStore.Status.ConStatus) { - case JsStore.ConnectionStatus.Connected: - { - this.executeLogic(request); - } - ; - break; - case JsStore.ConnectionStatus.Closed: - { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - ; - break; - } - } - }; - this.changeLogStatus = function (request) { - if (request.Query['logging'] === true) { - JsStore.EnableLog = true; - } - else { - JsStore.EnableLog = false; - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = /** @class */ (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.Sorted = false; - _this.CheckFlag = false; - _this.removeDuplicates = function () { - var Datas = this.Results; - //free results memory - this.Results = undefined; - var Key = this.getPrimaryKey(this.Query.From); - var lookupObject = {}; - for (var i in Datas) { - lookupObject[Datas[i][Key]] = Datas[i]; - } - //free datas memory - Datas = []; - for (i in lookupObject) { - Datas.push(lookupObject[i]); - } - this.Results = Datas; - }; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSkip = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLimit = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSimple = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest, Cursor, executeSkipAndLimit = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeSkip = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeLimit = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }, executeSimple = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = /** @class */ (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - this.OnSuccess(this.Results); - } - else if (this.SendResultFlag) { - this.OnSuccess(this.Results); - } - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.orQuerySuccess = function () { - this.Results = this.OrInfo.Results; - //free var memory - this.OrInfo.Results = undefined; - this.removeDuplicates(); - this.OrInfo.OnSucess(this.Results); - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess, - Results: [] - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - this.OrInfo.Results = this.OrInfo.Results.concat(this.Results); - if (!this.Query.Limit || (this.Query.Limit > this.OrInfo.Results.length)) { - this.Results = []; - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.orQuerySuccess(); - } - } - else { - this.orQuerySuccess(); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = /** @class */ (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (That.CheckFlag) { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - That.ObjectStore = That.Transaction.objectStore(query.From); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where != undefined) { - if (query.Where.Or) { - new Business.Select.Instance(query, function (results) { - That.ResultCount = results.length; - That.onTransactionCompleted(); - }, _this.OnError); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = /** @class */ (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.In); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - var That = this; - new Business.Select.Instance({ - From: this.Query.In, - Where: this.Query.Where - }, function (results) { - var Key = That.getPrimaryKey(That.Query.In), InQuery = [], WhereQry = {}; - results.forEach(function (value) { - InQuery.push(value[Key]); - }); - WhereQry[Key] = { In: InQuery }; - That.createtransactionForOrLogic({ - In: That.Query.In, - Where: WhereQry, - Set: That.Query.Set - }); - }, this.OnError); - }; - try { - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - var That = _this; - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(query.In); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - if (suppliedValue) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - } - else { - this.ErrorOccured = true; - //execute onSuccess with supplying 0 as rows affected - this.OnSuccess(0); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = /** @class */ (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this, Cursor; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.OrInfo.OnSucess(this.RowAffected); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = /** @class */ (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - switch (request.Name) { - case 'create_db': - case 'open_db': - this.RequestQueue.splice(0, 0, request); - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - ; - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - break; - default: this.RequestQueue.push(request); - } - } - else { - this.RequestQueue.push(request); - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - } - if (JsStore.EnableLog) { - console.log("request pushed: " + request.Name); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - if (JsStore.EnableLog) { - console.log("request executing : " + FirstRequest.Name); - } - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - this.executeCode(); - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - That.executeCodeUsingWorker({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - That.executeCode(); - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - JsStore.WorkerInstance.terminate(); - } - else { - KeyStore.init(); - } - _this.createWorker(); - if (dbName) { - _this.openDb(dbName); - } - return _this; - } - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - Instance.prototype.openDb = function (dbName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName, - OnSuccess: onSuccess, - OnError: onError, - }); - return this; - }; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - Instance.prototype.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - Instance.prototype.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - Instance.prototype.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - Instance.prototype.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -if (!self.alert) { - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name: " + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - KeyStore.init(); -} -//# sourceMappingURL=JsStore-1.2.0.js.map \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.0/JsStore-1.2.0.js.map b/Dist/V 1.2/V 1.2.0/JsStore-1.2.0.js.map deleted file mode 100644 index 7c130ca8..00000000 --- a/Dist/V 1.2/V 1.2.0/JsStore-1.2.0.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.2.0.js","sourceRoot":"","sources":["../License.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../JsStore/Script/enums.ts","../JsStore/Script/interfaces.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/HelperLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/BulkInsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.2.0 - 11/10/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipDataCheck\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n}","module JsStore {\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function = null) {\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n else {\r\n if (errCallBack) {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In': {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeWhereLogic(Column, Value['In'][i])\r\n }\r\n }; break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n DbConnection.close();\r\n setTimeout(function () {\r\n That.deleteDb(name, onSuccess, onError);\r\n }, 100);\r\n }\r\n\r\n deleteDb = function (name: string, onSuccess: Function, onError: Function) {\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"database is blocked, cant be deleted right now.\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n onSuccess();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private checkAndModifyValues = function (callBack) {\r\n var That = this,\r\n checkInternal = function (value) {\r\n if (value) {\r\n That.checkAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n That.ValuesIndex = 0;\r\n callBack();\r\n }\r\n };\r\n checkInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n if (IsReturn) {\r\n AddResult.onsuccess = function (e) {\r\n That.ValuesAffected.push(value);\r\n }\r\n }\r\n else {\r\n AddResult.onsuccess = function (e) {\r\n ++That.RowAffected;\r\n }\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(this.Query.Values[That.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n if (this.Query.SkipDataCheck) {\r\n That.insertData();\r\n }\r\n else {\r\n this.checkAndModifyValues(function () {\r\n That.insertData();\r\n });\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the value based on defined schema and modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BulkInsert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private bulkinsertData = function () {\r\n var That = this;\r\n this.Transaction = DbConnection.transaction([this.Query.Into], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(this.Query.Into);\r\n this.Transaction.oncomplete = function (e) {\r\n That.OnSuccess();\r\n }\r\n this.Query.Values.forEach(function (value) {\r\n That.ObjectStore.add(value);\r\n });\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.bulkinsertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.executeLogic(request);\r\n break;\r\n case 'change_log_status':\r\n this.changeLogStatus(request);\r\n default:\r\n switch (Status.ConStatus) {\r\n case ConnectionStatus.Connected: {\r\n this.executeLogic(request);\r\n }; break;\r\n case ConnectionStatus.Closed: {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }; break;\r\n }\r\n }\r\n }\r\n\r\n private changeLogStatus = function (request) {\r\n if (request.Query['logging'] === true) {\r\n EnableLog = true;\r\n }\r\n else {\r\n EnableLog = false;\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n else if (this.SendResultFlag) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (That.CheckFlag) {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n protected onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this,\r\n Cursor: IDBCursorWithValue;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.RequestQueue.splice(0, 0, request);\r\n if (WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n };\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n break;\r\n default: this.RequestQueue.push(request);\r\n }\r\n }\r\n else {\r\n this.RequestQueue.push(request);\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n if (EnableLog) {\r\n console.log(\"request pushed: \" + request.Name);\r\n }\r\n\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + FirstRequest.Name)\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n this.executeCode();\r\n }\r\n\r\n protected createWorker = function () {\r\n var That: CodeExecutionHelper = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n That.executeCodeUsingWorker({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n That.executeCode();\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n WorkerInstance.terminate();\r\n }\r\n else {\r\n KeyStore.init();\r\n }\r\n this.createWorker();\r\n if (dbName) {\r\n this.openDb(dbName);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * open database\r\n * \r\n * @param {string} dbName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n openDb(dbName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName,\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {Model.IDataBase} dataBase \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n createDb(dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb(onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select(query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count(query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert(query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update(query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete(query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear(tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","if (!self.alert) {\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name: \" + e.data.Name);\r\n }\r\n var Request = e.data,\r\n IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered;\r\n KeyStore.init();\r\n}\r\n\r\n"]} \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.0/JsStore-1.2.0.min.js b/Dist/V 1.2/V 1.2.0/JsStore-1.2.0.min.js deleted file mode 100644 index 45cf8c80..00000000 --- a/Dist/V 1.2/V 1.2.0/JsStore-1.2.0.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.2 - 11/10/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var i=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(i.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var i=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(i.RowAffected)},s.Transaction.onerror=function(e){i.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var i=self.indexedDB.open(n,1);i.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},i.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=i.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},i.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName,function(){r.checkConnectionAndExecuteLogic(n)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={}));var JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.TempResults=[],e.throwError=function(e){throw e},e.getObjectFirstKey=function(e){for(var t in e)return t;return null}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n){var r={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:r.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:r.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:r.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:r.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:r.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:r.Message="No value supplied";break;case e.ErrorType.InvalidOp:r.Message="Invalid Op Value '"+n.Op+"'";break;case e.ErrorType.ColumnNotExist:r.Message="Column '"+n.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:r.Message="Null value is not allowed for column '"+n.ColumnName+"'";break;case e.ErrorType.BadDataType:r.Message="Supplied value for column '"+n.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:r.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:r.Message="Table '"+n.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:r.Message="Database '"+n.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return r},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n,r){if(void 0===r&&(r=null),e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})}else if(r){var o={Name:e.Status.LastError,Message:""};switch(o.Name){case e.ErrorType.IndexedDbBlocked:o.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:o.Message="IndexedDB is not supported"}r(o)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0,e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})},e.disableLog=function(){e.EnableLog=!1,e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(t,n){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+n),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:en.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.SendResultFlag=!0,this.onErrorOccured=function(t,n){if(void 0===n&&(n=!1),1==++this.ErrorCount&&null!=this.OnError){if(n)this.OnError(t);else{var r={Name:t.target.error.name,Message:t.target.error.message};this.OnError(r)}e.EnableLog&&console.error(r)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,n){switch(t.name){case"NotFoundError":var r=e.Utils.getError(e.ErrorType.TableNotExist,n);e.throwError(r);default:console.error(t)}},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n},this.getObjectSecondKey=function(e){var t=!1;for(var n in e){if(t)return n;t=!0}},this.goToWhereLogic=function(){var t=e.getObjectFirstKey(this.Query.Where);if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("object"==typeof n){this.CheckFlag=Boolean(Object.keys(n).length>1||Object.keys(this.Query.Where).length>1);var r=e.getObjectFirstKey(n);switch(r){case"Like":var o=n.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":for(var s=0;s":case"<":case">=":case"<=":this.executeWhereLogic(t,n,r);break;default:this.executeWhereLogic(t,n)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)},this.getPrimaryKey=function(e){var t=this.getTable(e).PrimaryKey;return t||this.getKeyPath()},this.getKeyPath=function(e){return t.DbConnection.transaction([e],"readonly").objectStore(e).keyPath}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;if("object"==typeof s)for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,i=o.length;s2?e.Occurence.Any:e.Occurence.Last):(i=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(u=o.indexOf(i.toLowerCase()))<0&&(r=!1);break;case e.Occurence.First:((u=o.indexOf(i.toLowerCase()))>0||u<0)&&(r=!1);break;default:(u=o.lastIndexOf(i.toLowerCase()))":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":t<=s&&(r=!1);break;case"<":t>=s&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],i)}}else if(s!=t[o]){r=!1;break}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=[],i=indexedDB.open(t.ActiveDataBase.Name,n);i.onerror=function(e){null!=o&&o(e.target.error)},i.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=i.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=r&&r(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},i.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),u(n,e)):e.RequireCreation&&u(n,e)})};var u=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}s.push(n.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){this.deleteDb=function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("database is blocked, cant be deleted right now.")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),r()}};var s=this;t.DbConnection.close(),setTimeout(function(){s.deleteDb(n,r,o)},100)}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var i=n.call(this)||this;i.ValuesAffected=[],i.ValuesIndex=0,i.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},i.checkAndModifyValues=function(e){var t=this,n=function(r){r?t.checkAndModifyValue(r,function(){t.ErrorOccured?t.onErrorOccured(t.Error,!0):n(t.Query.Values[t.ValuesIndex++])}):(t.ValuesIndex=0,e())};n(this.Query.Values[this.ValuesIndex++])},i.insertData=function(){var e=this,n=this.Query.Return,r=function(t){if(t){var o=e.ObjectStore.add(t);o.onerror=function(t){e.onErrorOccured(t)},o.onsuccess=n?function(n){e.ValuesAffected.push(t)}:function(t){++e.RowAffected},r(e.Query.Values[e.ValuesIndex++])}};e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},r(this.Query.Values[e.ValuesIndex++])};try{i.Query=r,i.OnSuccess=o,i.OnError=s;var u=i;if(i.Table=i.getTable(r.Into),i.Table)i.Query.SkipDataCheck?u.insertData():i.checkAndModifyValues(function(){u.insertData()});else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(c)}}catch(e){i.onExceptionOccured(e,{TableName:r.Into})}return i}return __extends(r,n),r.prototype.checkAndModifyValue=function(n,r){var o=this,s=this.Table.Name,i=0,u=function(c){if(c){var a=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)},l=function(){c.NotNull&&e.isNull(n[c.Name])?a(e.ErrorType.NullValue,{ColumnName:c.Name}):c.DataType&&typeof n[c.Name]!=c.DataType&&a(e.ErrorType.BadDataType,{ColumnName:c.Name}),u(o.Table.Columns[i++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),l()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,l()):l()}else r()};u(o.Table.Columns[i++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var i=n.call(this)||this;i.ValuesAffected=[],i.ValuesIndex=0,i.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},i.bulkinsertData=function(){var e=this;this.Transaction=t.DbConnection.transaction([this.Query.Into],"readwrite"),this.ObjectStore=this.Transaction.objectStore(this.Query.Into),this.Transaction.oncomplete=function(t){e.OnSuccess()},this.Query.Values.forEach(function(t){e.ObjectStore.add(t)})};try{i.Query=r,i.OnSuccess=o,i.OnError=s;if(i.Table=i.getTable(r.Into),i.Table)i.bulkinsertData();else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(u)}}catch(e){i.onExceptionOccured(e,{TableName:r.Into})}return i}return __extends(r,n),r}(t.Base);t.BulkInsert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=r&&r()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,i=s,u=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return u.onsuccess=function(t){i.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},u.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){switch(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),n.Name){case"create_db":case"open_db":this.executeLogic(n);break;case"change_log_status":this.changeLogStatus(n);default:switch(e.Status.ConStatus){case e.ConnectionStatus.Connected:this.executeLogic(n);break;case e.ConnectionStatus.Closed:var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}}},this.changeLogStatus=function(t){!0===t.Query.logging?e.EnableLog=!0:e.EnableLog=!1},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){Array.isArray(n.Values)?new t.Insert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var i=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):i()})},200)};i()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.Sorted=!1,t.CheckFlag=!1,t.removeDuplicates=function(){var e=this.Results;this.Results=void 0;var t=this.getPrimaryKey(this.Query.From),n={};for(var r in e)n[e[r][t]]=e[r];e=[];for(r in n)e.push(n[r]);this.Results=e},t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n,r=this;if(this.Query.Order&&this.Query.Order.By)if(r.ObjectStore.indexNames.contains(this.Query.Order.By)){var o=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,n=this.ObjectStore.index(r.Query.Order.By).openCursor(null,o)}else{var s=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(s)}else n=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;n.onsuccess=function(n){(t=n.target.result)&&(e&&r.Results.length!=r.LimitRecord?(r.Results.push(t.value),t.continue()):(e=!0,t.advance(r.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;n.onsuccess=function(n){(t=n.target.result)&&(e?(r.Results.push(t.value),t.continue()):(e=!0,t.advance(r.SkipRecord)))}}():this.LimitRecord?n.onsuccess=function(e){(t=e.target.result)&&r.Results.length!=r.LimitRecord&&(r.Results.push(t.value),t.continue())}:n.onsuccess=function(e){(t=e.target.result)&&(r.Results.push(t.value),t.continue())},n.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e,t=this.SkipRecord,n=this,r=function(e){0==t?n.Results.push(e):--t};n.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,n.Results.length!=n.LimitRecord&&e&&(n.filterOnOccurence(e.value)&&n.checkForWhereConditionMatch(e.value)&&r(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,n.Results.length!=n.LimitRecord&&e&&(n.filterOnOccurence(e.value)&&r(e.value),e.continue())}},n.executeSkip=function(){var e,t=this.SkipRecord,n=this,r=function(e){0==t?n.Results.push(e):--t};n.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(n.filterOnOccurence(e.value)&&n.checkForWhereConditionMatch(e.value)&&r(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(n.filterOnOccurence(e.value)&&r(e.value),e.continue())}},n.executeLimit=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(n){e=n.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(n){e=n.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},n.executeSimple=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(n){(e=n.target.result)&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(n){(e=n.target.result)&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.LimitRecord?s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&s.checkForWhereConditionMatch(o.value)&&(s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&(s.Results.push(o.value),o.continue())}:s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&(s.Results.push(o.value),o.continue())}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],i=0,u=(n.Column,o.Results),c=u.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[i]={},e==t[n.Column]){s[i][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(u=0;ur.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var i=n.call(this)||this;i.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess(this.Results)},i.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readonly"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},i.orQuerySuccess=function(){this.Results=this.OrInfo.Results,this.OrInfo.Results=void 0,this.removeDuplicates(),this.OrInfo.OnSucess(this.Results)},i.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess,Results:[]},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){if(this.OrInfo.Results=this.OrInfo.Results.concat(this.Results),!this.Query.Limit||this.Query.Limit>this.OrInfo.Results.length){this.Results=[];var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.orQuerySuccess()}else this.orQuerySuccess()}};var u=i;i.Query=r,i.OnSuccess=o,i.OnError=s,i.SkipRecord=i.Query.Skip,i.LimitRecord=i.Query.Limit;try{i.Transaction=t.DbConnection.transaction([r.From],"readonly"),i.Transaction.oncomplete=function(e){u.onTransactionCompleted()},i.Transaction.ontimeout=u.onTransactionCompleted,i.ObjectStore=i.Transaction.objectStore(r.From),r.Where?(r.Where.Or&&i.executeOrLogic(),i.goToWhereLogic()):i.executeWhereUndefinedLogic()}catch(e){i.onExceptionOccured(e,{TableName:r.From})}return i}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var n,r=this.ObjectStore.openCursor();r.onsuccess=function(t){(n=t.target.result)&&(++e.ResultCount,n.continue())},r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.value)&&o.checkForWhereConditionMatch(r.value)&&++o.ResultCount,r.continue())}:this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.value)&&++o.ResultCount,r.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r=this;if(t=n?t[n]:t,r.CheckFlag){(i=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){(s=e.target.result)&&(r.checkForWhereConditionMatch(s.value)&&++r.ResultCount,s.continue())},i.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else if(this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,n));o.onsuccess=function(){r.ResultCount=o.result},o.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else{var s,i=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n));i.onsuccess=function(e){(s=e.target.result)&&(++r.ResultCount,s.continue())},i.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&this.OnSuccess(this.ResultCount)};var i=s;s.Query=n,s.OnSuccess=r,s.OnError=o;try{var u=function(){i.Transaction=e.DbConnection.transaction([n.From],"readonly"),i.ObjectStore=i.Transaction.objectStore(n.From),i.Transaction.oncomplete=function(e){i.onTransactionCompleted()},i.Transaction.ontimeout=i.onTransactionTimeout};void 0!=n.Where?n.Where.Or?new e.Select.Instance(n,function(e){i.ResultCount=e.length,i.onTransactionCompleted()},s.OnError):(u(),s.goToWhereLogic()):(u(),s.executeWhereUndefinedLogic())}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e,n=this,r=this.ObjectStore.openCursor();r.onsuccess=function(r){(e=r.target.result)&&(e.update(t.updateValue(n.Query.Set,e.value)),++n.RowAffected,e.continue())},r.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o,s=this;this.CompValue=n.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},s.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&s.checkForWhereConditionMatch(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}:this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}},r}return __extends(r,n),r}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereLogic=function(t,n,r){var o,s,i=this;n=r?n[r]:n,s=this.ObjectStore.index(t).openCursor(this.getKeyRange(n,r)),i.CheckFlag?s.onsuccess=function(t){(o=t.target.result)&&(i.checkForWhereConditionMatch(o.value)&&(o.update(e.updateValue(i.Query.Set,o.value)),++i.RowAffected),o.continue())}:s.onsuccess=function(t){(o=t.target.result)&&(o.update(e.updateValue(i.Query.Set,o.value)),++i.RowAffected,o.continue())},s.onerror=function(e){i.ErrorOccured=!0,i.onErrorOccured(e)}},n}return __extends(n,t),n}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},s.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.In],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.In),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},s.executeOrLogic=function(){var e=this;new t.Select.Instance({From:this.Query.In,Where:this.Query.Where},function(t){var n=e.getPrimaryKey(e.Query.In),r=[],o={};t.forEach(function(e){r.push(e[n])}),o[n]={In:r},e.createtransactionForOrLogic({In:e.Query.In,Where:o,Set:e.Query.Set})},this.OnError)};try{if(s.OnSuccess=r,s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e;var i=s,u=function(){i.Transaction=t.DbConnection.transaction([e.In],"readwrite"),i.ObjectStore=i.Transaction.objectStore(e.In),i.Transaction.oncomplete=function(e){i.onTransactionCompleted()},i.Transaction.ontimeout=i.onTransactionTimeout};e.Where?e.Where.Or?s.executeOrLogic():(u(),s.goToWhereLogic()):(u(),s.executeWhereUndefinedLogic())}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){if(t){var r=this.getTable(n),o=this;if(r){var s=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)};r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){!function(t){if(n.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:n.Name}),n.DataType){var r=typeof t;if(r!=n.DataType)if("object"!=r)s(e.ErrorType.BadDataType,{ColumnName:n.Name});else{var o=["+","-","*","/"];for(var i in t){o.indexOf(i)<0&&s(e.ErrorType.BadDataType,{ColumnName:n.Name});break}}}}(t[n.Name])}return!0})}else{var i=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n});e.throwError(i)}}else this.ErrorOccured=!0,this.OnSuccess(0)},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e,t=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){(e=n.target.result)&&(e.delete(),++t.RowAffected,e.continue())},n.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.value)&&o.checkForWhereConditionMatch(r.value)&&(r.delete(),++o.RowAffected),r.continue())}:this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.value)&&(r.delete(),++o.RowAffected),r.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,o=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),s.CheckFlag?o.onsuccess=function(e){(r=e.target.result)&&(s.checkForWhereConditionMatch(r.value)&&(r.delete(),++s.RowAffected),r.continue())}:o.onsuccess=function(e){(r=e.target.result)&&(r.delete(),++s.RowAffected,r.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var i=n.call(this)||this;i.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},i.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},i.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.OrInfo.OnSucess(this.RowAffected)}};try{var u=i;i.Query=r,i.OnSuccess=o,i.OnError=s,i.Transaction=t.DbConnection.transaction([r.From],"readwrite"),i.ObjectStore=i.Transaction.objectStore(r.From),i.Transaction.oncomplete=function(){u.onTransactionCompleted()},i.Transaction.onerror=function(e){u.onErrorOccured(e)},r.Where?(r.Where.Or&&i.executeOrLogic(),i.goToWhereLogic()):i.executeWhereUndefinedLogic()}catch(e){i.onExceptionOccured(e,{TableName:r.From})}return i}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(t){if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)switch(t.Name){case"create_db":case"open_db":this.RequestQueue.splice(0,0,t),e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode(),e.Status.ConStatus=e.ConnectionStatus.Connected;break;default:this.RequestQueue.push(t)}else this.RequestQueue.push(t),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode();e.EnableLog&&console.log("request pushed: "+t.Name)},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],n={Name:t.Name,Query:t.Query};e.EnableLog&&console.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished : "+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var n=this.getScriptUrl();n&&n.length>0?(e.WorkerInstance=new Worker(n),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},t.executeCodeUsingWorker({Name:"change_log_status",Query:{logging:e.EnableLog}}),setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){void 0===n&&(n=null);var r=t.call(this)||this;return e.WorkerStatus==e.WebWorkerStatus.Registered?e.WorkerInstance.terminate():KeyStore.init(),r.createWorker(),n&&r.openDb(n),r}return __extends(n,t),n.prototype.openDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"open_db",Query:e,OnSuccess:t,OnError:n}),this},n.prototype.createDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},n.prototype.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.prototype.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},n.prototype.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self.alert||(self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name: "+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)},JsStore.WorkerStatus=JsStore.WebWorkerStatus.Registered,KeyStore.init()); \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.1/JsStore-1.2.1.d.ts b/Dist/V 1.2/V 1.2.1/JsStore-1.2.1.d.ts deleted file mode 100644 index 69bf83aa..00000000 --- a/Dist/V 1.2/V 1.2.1/JsStore-1.2.1.d.ts +++ /dev/null @@ -1,902 +0,0 @@ -/** JsStore.js - v1.2.1 - 13/10/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - IndexedDbUndefined = "indexeddb_undefined", - IndexedDbBlocked = "indexeddb_blocked", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - UnableToStart = "unable_to_start", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipDataCheck: any; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - interface IError { - Name: string; - Message: string; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus, TempResults: Array; - var throwError: (error: any) => never; - var getObjectFirstKey: (value: any) => string; -} -declare module JsStore { - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack?: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; - /** - * get the results in file by file type - * - * @param {*} qry - * @param {string} type - */ - var getFile: (qry: any, data: any, type?: string) => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - SendResultFlag: Boolean; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - protected getObjectSecondKey: (value: any) => string; - protected goToWhereLogic: () => void; - protected getPrimaryKey: (tableName: any) => any; - private getKeyPath; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - deleteDb: (name: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private checkAndModifyValues; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class BulkInsert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private bulkinsertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private changeLogStatus; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - bulkInsert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - protected removeDuplicates: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Where { - onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private orQuerySuccess; - private executeOrLogic; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - protected onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - openDb: (dbName: string, onSuccess?: Function, onError?: Function) => any; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - createDb: (dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function) => any; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb: (onSuccess: Function, onError?: Function) => any; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select: (query: ISelect, onSuccess?: Function, onError?: Function) => any; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count: (query: ICount, onSuccess?: Function, onError?: Function) => any; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update: (query: IUpdate, onSuccess?: Function, onError?: Function) => any; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete: (query: IDelete, onSuccess?: Function, onError?: Function) => any; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear: (tableName: string, onSuccess?: Function, onError?: Function) => any; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - bulkInsert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - } -} -export = JsStore; \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.1/JsStore-1.2.1.js b/Dist/V 1.2/V 1.2.1/JsStore-1.2.1.js deleted file mode 100644 index c3c75dc9..00000000 --- a/Dist/V 1.2/V 1.2.1/JsStore-1.2.1.js +++ /dev/null @@ -1,3942 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.2.1 - 13/10/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var KeyStore; -(function (KeyStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbUndefined - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = /** @class */ (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = /** @class */ (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = /** @class */ (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = /** @class */ (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbBlocked, - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - ErrorType["IndexedDbUndefined"] = "indexeddb_undefined"; - ErrorType["IndexedDbBlocked"] = "indexeddb_blocked"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["UnableToStart"] = "unable_to_start"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }, JsStore.TempResults = []; - JsStore.throwError = function (error) { - throw error; - }; - JsStore.getObjectFirstKey = function (value) { - for (var key in value) { - return key; - } - return null; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (errCallBack === void 0) { errCallBack = null; } - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - else { - if (errCallBack) { - var Error = { - Name: JsStore.Status.LastError, - Message: '' - }; - switch (Error.Name) { - case JsStore.ErrorType.IndexedDbBlocked: - Error.Message = "IndexedDB is blocked"; - break; - case JsStore.ErrorType.IndexedDbUndefined: - Error.Message = "IndexedDB is not supported"; - break; - } - errCallBack(Error); - } - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; - /** - * get the results in file by file type - * - * @param {*} qry - * @param {string} type - */ - JsStore.getFile = function (qry, data, type) { - if (type === void 0) { type = null; } - var downloadJson = function (qry) { - // var Result = []; - // var Table = document.querySelector('#divResultSQL table tbody'); - // for (var i = 1, rowLength = Table.rows.length; i < rowLength; i++) { - // var Obj = {}; - // for (var j = 0, colLength = Table.rows[i].cells.length; j < colLength; j++) { - // if (j == 1 || j == 4) { - // Obj[Table.rows[0].cells[j].innerText] = Table.rows[i].cells[j].innerText; - // } else { - // Obj[Table.rows[0].cells[j].innerText] = Number(Table.rows[i].cells[j].innerText); - // } - // } - // Result.push(Obj); - // } - // var a = document.createElement("a"); - // var file = new Blob([JSON.stringify(Result)], { - // type: "text/json" - // }); - // a.href = URL.createObjectURL(file); - // a.download = fileName + ".json"; - // a.click(); - }; - switch (type.toLowerCase()) { - case 'csv': - default: downloadJson(qry); - } - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = /** @class */ (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = /** @class */ (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = /** @class */ (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.SendResultFlag = true; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - this.getObjectSecondKey = function (value) { - var IsSecond = false; - for (var key in value) { - if (IsSecond) { - return key; - } - else { - IsSecond = true; - } - } - }; - this.goToWhereLogic = function () { - var Column = JsStore.getObjectFirstKey(this.Query.Where); - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1); - var Key = JsStore.getObjectFirstKey(Value); - switch (Key) { - case 'Like': - { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - ; - break; - case 'In': - { - for (var i = 0; i < Value['In'].length; i++) { - this.executeWhereLogic(Column, Value['In'][i]); - } - } - ; - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - this.executeWhereLogic(Column, Value, Key); - break; - default: this.executeWhereLogic(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1); - this.executeWhereLogic(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - }; - this.getPrimaryKey = function (tableName) { - var PrimaryKey = this.getTable(tableName).PrimaryKey; - return PrimaryKey ? PrimaryKey : this.getKeyPath(); - }; - this.getKeyPath = function (tableName) { - var Transaction = Business.DbConnection.transaction([tableName], "readonly"), ObjectStore = Transaction.objectStore(tableName); - return ObjectStore.keyPath; - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - switch (CompSymbol) { - case JsStore.Occurence.Any: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - SymbolIndex = value.lastIndexOf(CompValue.toLowerCase()); - if (SymbolIndex < value.length - CompValue.length) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (value <= CompareValue) { - Status = false; - } - ; - break; - //less than - case '<': - if (value >= CompareValue) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - if (typeof ColumnValue == 'object') { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - else { - var CompareValue = rowValue[Column]; - if (ColumnValue != CompareValue) { - Status = false; - break; - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = /** @class */ (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = /** @class */ (function () { - function DropDb(name, onSuccess, onError) { - this.deleteDb = function (name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("database is blocked, cant be deleted right now."); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - onSuccess(); - }; - }; - var That = this; - Business.DbConnection.close(); - setTimeout(function () { - That.deleteDb(name, onSuccess, onError); - }, 100); - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = /** @class */ (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.checkAndModifyValues = function (callBack) { - var That = this, checkInternal = function (value) { - if (value) { - That.checkAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - That.ValuesIndex = 0; - callBack(); - } - }; - checkInternal(this.Query.Values[this.ValuesIndex++]); - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - if (IsReturn) { - AddResult.onsuccess = function (e) { - That.ValuesAffected.push(value); - }; - } - else { - AddResult.onsuccess = function (e) { - ++That.RowAffected; - }; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - } - }; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(this.Query.Values[That.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - if (_this.Query.SkipDataCheck) { - That.insertData(); - } - else { - _this.checkAndModifyValues(function () { - That.insertData(); - }); - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var BulkInsert = /** @class */ (function (_super) { - __extends(BulkInsert, _super); - function BulkInsert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.bulkinsertData = function () { - var That = this; - this.Transaction = Business.DbConnection.transaction([this.Query.Into], "readwrite"); - this.ObjectStore = this.Transaction.objectStore(this.Query.Into); - this.Transaction.oncomplete = function (e) { - That.OnSuccess(); - }; - this.Query.Values.forEach(function (value) { - That.ObjectStore.add(value); - }); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - _this.bulkinsertData(); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - return BulkInsert; - }(Business.Base)); - Business.BulkInsert = BulkInsert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = /** @class */ (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = /** @class */ (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - switch (request.Name) { - case 'create_db': - case 'open_db': - this.executeLogic(request); - break; - case 'change_log_status': - this.changeLogStatus(request); - default: - switch (JsStore.Status.ConStatus) { - case JsStore.ConnectionStatus.Connected: - { - this.executeLogic(request); - } - ; - break; - case JsStore.ConnectionStatus.Closed: - { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - ; - break; - } - } - }; - this.changeLogStatus = function (request) { - if (request.Query['logging'] === true) { - JsStore.EnableLog = true; - } - else { - JsStore.EnableLog = false; - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'bulk_insert': - this.bulkInsert(request.Query, OnSuccess, OnError); - break; - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.bulkInsert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.BulkInsert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = /** @class */ (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.Sorted = false; - _this.CheckFlag = false; - _this.removeDuplicates = function () { - var Datas = this.Results; - //free results memory - this.Results = undefined; - var Key = this.getPrimaryKey(this.Query.From); - var lookupObject = {}; - for (var i in Datas) { - lookupObject[Datas[i][Key]] = Datas[i]; - } - //free datas memory - Datas = []; - for (i in lookupObject) { - Datas.push(lookupObject[i]); - } - this.Results = Datas; - }; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSkip = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLimit = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSimple = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest, Cursor, executeSkipAndLimit = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeSkip = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeLimit = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }, executeSimple = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = /** @class */ (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - this.OnSuccess(this.Results); - } - else if (this.SendResultFlag) { - this.OnSuccess(this.Results); - } - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.orQuerySuccess = function () { - this.Results = this.OrInfo.Results; - //free var memory - this.OrInfo.Results = undefined; - this.removeDuplicates(); - this.OrInfo.OnSucess(this.Results); - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess, - Results: [] - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - this.OrInfo.Results = this.OrInfo.Results.concat(this.Results); - if (!this.Query.Limit || (this.Query.Limit > this.OrInfo.Results.length)) { - this.Results = []; - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.orQuerySuccess(); - } - } - else { - this.orQuerySuccess(); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Where)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = /** @class */ (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (That.CheckFlag) { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - That.ObjectStore = That.Transaction.objectStore(query.From); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where != undefined) { - if (query.Where.Or) { - new Business.Select.Instance(query, function (results) { - That.ResultCount = results.length; - That.onTransactionCompleted(); - }, _this.OnError); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = /** @class */ (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.In); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - var That = this; - new Business.Select.Instance({ - From: this.Query.In, - Where: this.Query.Where - }, function (results) { - var Key = That.getPrimaryKey(That.Query.In), InQuery = [], WhereQry = {}; - results.forEach(function (value) { - InQuery.push(value[Key]); - }); - WhereQry[Key] = { In: InQuery }; - That.createtransactionForOrLogic({ - In: That.Query.In, - Where: WhereQry, - Set: That.Query.Set - }); - }, this.OnError); - }; - try { - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - var That = _this; - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(query.In); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - if (suppliedValue) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - } - else { - this.ErrorOccured = true; - //execute onSuccess with supplying 0 as rows affected - this.OnSuccess(0); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = /** @class */ (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this, Cursor; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.OrInfo.OnSucess(this.RowAffected); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = /** @class */ (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - switch (request.Name) { - case 'create_db': - case 'open_db': - this.RequestQueue.splice(0, 0, request); - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - ; - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - break; - default: this.RequestQueue.push(request); - } - } - else { - this.RequestQueue.push(request); - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - } - if (JsStore.EnableLog) { - console.log("request pushed: " + request.Name); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - if (JsStore.EnableLog) { - console.log("request executing : " + FirstRequest.Name); - } - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - this.executeCode(); - } - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - That.executeCodeUsingWorker({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - That.executeCode(); - } - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.openDb = function (dbName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName, - OnSuccess: onSuccess, - OnError: onError, - }); - return this; - }; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - _this.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - _this.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.bulkInsert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'bulk_insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - JsStore.WorkerInstance.terminate(); - } - else if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - KeyStore.init(); - } - _this.createWorker(); - if (dbName) { - _this.openDb(dbName); - } - return _this; - } - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -if (self && !self.alert) { - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name: " + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - KeyStore.init(); -} -//# sourceMappingURL=JsStore-1.2.1.js.map \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.1/JsStore-1.2.1.js.map b/Dist/V 1.2/V 1.2.1/JsStore-1.2.1.js.map deleted file mode 100644 index 2716f0c1..00000000 --- a/Dist/V 1.2/V 1.2.1/JsStore-1.2.1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.2.1.js","sourceRoot":"","sources":["../License.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../JsStore/Script/enums.ts","../JsStore/Script/interfaces.ts","../JsStore/Script/CommonLogic.ts","../JsStore/Script/UtilsLogic.ts","../JsStore/Script/HelperLogic.ts","../JsStore/Script/Model/Column.ts","../JsStore/Script/Model/Table.ts","../JsStore/Script/Model/DataBase.ts","../JsStore/Script/Business/BaseLogic.ts","../JsStore/Script/Business/CreateDbLogic.ts","../JsStore/Script/Business/DropDbLogic.ts","../JsStore/Script/Business/InsertLogic.ts","../JsStore/Script/Business/BulkInsertLogic.ts","../JsStore/Script/Business/OpenDbLogic.ts","../JsStore/Script/Business/ClearLogic.ts","../JsStore/Script/Business/MainLogic.ts","../JsStore/Script/Business/Select/BaseSelectLogic.ts","../JsStore/Script/Business/Select/NotWhereLogic.ts","../JsStore/Script/Business/Select/LikeLogic.ts","../JsStore/Script/Business/Select/WhereLogic.ts","../JsStore/Script/Business/Select/JoinLogic.ts","../JsStore/Script/Business/Select/InstanceLogic.ts","../JsStore/Script/Business/Count/BaseCountLogic.ts","../JsStore/Script/Business/Count/NotWhereLogic.ts","../JsStore/Script/Business/Count/LikeLogic.ts","../JsStore/Script/Business/Count/WhereLogic.ts","../JsStore/Script/Business/Count/InstanceLogic.ts","../JsStore/Script/Business/Update/BaseUpdateLogic.ts","../JsStore/Script/Business/Update/NotWhereLogic.ts","../JsStore/Script/Business/Update/LikeLogic.ts","../JsStore/Script/Business/Update/WhereLogic.ts","../JsStore/Script/Business/Update/InstanceLogic.ts","../JsStore/Script/Business/Delete/BaseDeleteLogic.ts","../JsStore/Script/Business/Delete/NotWhereLogic.ts","../JsStore/Script/Business/Delete/LikeLogic.ts","../JsStore/Script/Business/Delete/WhereLogic.ts","../JsStore/Script/Business/Delete/InstanceLogic.ts","../JsStore/Script/CodeExecutionHelper.ts","../JsStore/Script/JsStoreInstance.ts","../JsStore/Script/DirectCode.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.2.1 - 13/10/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipDataCheck\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n}","module JsStore {\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function = null) {\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n else {\r\n if (errCallBack) {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * get the results in file by file type\r\n * \r\n * @param {*} qry \r\n * @param {string} type \r\n */\r\n export var getFile = function (qry: any, data, type: string = null) {\r\n var downloadJson = function (qry) {\r\n // var Result = [];\r\n // var Table = document.querySelector('#divResultSQL table tbody');\r\n // for (var i = 1, rowLength = Table.rows.length; i < rowLength; i++) {\r\n // var Obj = {};\r\n // for (var j = 0, colLength = Table.rows[i].cells.length; j < colLength; j++) {\r\n // if (j == 1 || j == 4) {\r\n // Obj[Table.rows[0].cells[j].innerText] = Table.rows[i].cells[j].innerText;\r\n // } else {\r\n // Obj[Table.rows[0].cells[j].innerText] = Number(Table.rows[i].cells[j].innerText);\r\n // }\r\n // }\r\n // Result.push(Obj);\r\n // }\r\n // var a = document.createElement(\"a\");\r\n // var file = new Blob([JSON.stringify(Result)], {\r\n // type: \"text/json\"\r\n // });\r\n // a.href = URL.createObjectURL(file);\r\n // a.download = fileName + \".json\";\r\n // a.click(); \r\n }\r\n switch (type.toLowerCase()) {\r\n case 'csv':\r\n default: downloadJson(qry);\r\n }\r\n }\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In': {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeWhereLogic(Column, Value['In'][i])\r\n }\r\n }; break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n DbConnection.close();\r\n setTimeout(function () {\r\n That.deleteDb(name, onSuccess, onError);\r\n }, 100);\r\n }\r\n\r\n deleteDb = function (name: string, onSuccess: Function, onError: Function) {\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"database is blocked, cant be deleted right now.\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n onSuccess();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private checkAndModifyValues = function (callBack) {\r\n var That = this,\r\n checkInternal = function (value) {\r\n if (value) {\r\n That.checkAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n That.ValuesIndex = 0;\r\n callBack();\r\n }\r\n };\r\n checkInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n if (IsReturn) {\r\n AddResult.onsuccess = function (e) {\r\n That.ValuesAffected.push(value);\r\n }\r\n }\r\n else {\r\n AddResult.onsuccess = function (e) {\r\n ++That.RowAffected;\r\n }\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(this.Query.Values[That.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n if (this.Query.SkipDataCheck) {\r\n That.insertData();\r\n }\r\n else {\r\n this.checkAndModifyValues(function () {\r\n That.insertData();\r\n });\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the value based on defined schema and modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BulkInsert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private bulkinsertData = function () {\r\n var That = this;\r\n this.Transaction = DbConnection.transaction([this.Query.Into], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(this.Query.Into);\r\n this.Transaction.oncomplete = function (e) {\r\n That.OnSuccess();\r\n }\r\n this.Query.Values.forEach(function (value) {\r\n That.ObjectStore.add(value);\r\n });\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.bulkinsertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.executeLogic(request);\r\n break;\r\n case 'change_log_status':\r\n this.changeLogStatus(request);\r\n default:\r\n switch (Status.ConStatus) {\r\n case ConnectionStatus.Connected: {\r\n this.executeLogic(request);\r\n }; break;\r\n case ConnectionStatus.Closed: {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }; break;\r\n }\r\n }\r\n }\r\n\r\n private changeLogStatus = function (request) {\r\n if (request.Query['logging'] === true) {\r\n EnableLog = true;\r\n }\r\n else {\r\n EnableLog = false;\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'bulk_insert': this.bulkInsert(request.Query, OnSuccess, OnError);\r\n break;\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public bulkInsert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new BulkInsert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Where {\r\n public onTransactionCompleted = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n else if (this.SendResultFlag) {\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (That.CheckFlag) {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n protected onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this,\r\n Cursor: IDBCursorWithValue;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.RequestQueue.splice(0, 0, request);\r\n if (WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n };\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n break;\r\n default: this.RequestQueue.push(request);\r\n }\r\n }\r\n else {\r\n this.RequestQueue.push(request);\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n if (EnableLog) {\r\n console.log(\"request pushed: \" + request.Name);\r\n }\r\n\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + FirstRequest.Name)\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n protected createWorker = function () {\r\n var That: CodeExecutionHelper = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n That.executeCodeUsingWorker({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n That.executeCode();\r\n }\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n WorkerInstance.terminate();\r\n }\r\n else if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n KeyStore.init();\r\n }\r\n this.createWorker();\r\n if (dbName) {\r\n this.openDb(dbName);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * open database\r\n * \r\n * @param {string} dbName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n openDb = function (dbName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName,\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {Model.IDataBase} dataBase \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n createDb = function (dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb = function (onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select = function (query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count = function (query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update = function (query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete = function (query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear = function (tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * insert bulk amount of data\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n bulkInsert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'bulk_insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n }\r\n}\r\n","if (self && !self.alert) {\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name: \" + e.data.Name);\r\n }\r\n var Request = e.data,\r\n IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered;\r\n KeyStore.init();\r\n}\r\n\r\n"]} \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.1/JsStore-1.2.1.min.js b/Dist/V 1.2/V 1.2.1/JsStore-1.2.1.min.js deleted file mode 100644 index 79a0ca8d..00000000 --- a/Dist/V 1.2/V 1.2.1/JsStore-1.2.1.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.2.1 - 13/10/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName,function(){r.checkConnectionAndExecuteLogic(n)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={}));var JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.TempResults=[],e.throwError=function(e){throw e},e.getObjectFirstKey=function(e){for(var t in e)return t;return null}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n){var r={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:r.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:r.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:r.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:r.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:r.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:r.Message="No value supplied";break;case e.ErrorType.InvalidOp:r.Message="Invalid Op Value '"+n.Op+"'";break;case e.ErrorType.ColumnNotExist:r.Message="Column '"+n.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:r.Message="Null value is not allowed for column '"+n.ColumnName+"'";break;case e.ErrorType.BadDataType:r.Message="Supplied value for column '"+n.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:r.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:r.Message="Table '"+n.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:r.Message="Database '"+n.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return r},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n,r){if(void 0===r&&(r=null),e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})}else if(r){var o={Name:e.Status.LastError,Message:""};switch(o.Name){case e.ErrorType.IndexedDbBlocked:o.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:o.Message="IndexedDB is not supported"}r(o)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})},e.disableLog=function(){e.EnableLog=!1,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})},e.getFile=function(e,t,n){void 0===n&&(n=null);n.toLowerCase()}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(t,n){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+n),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:en.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.SendResultFlag=!0,this.onErrorOccured=function(t,n){if(void 0===n&&(n=!1),1==++this.ErrorCount&&null!=this.OnError){if(n)this.OnError(t);else{var r={Name:t.target.error.name,Message:t.target.error.message};this.OnError(r)}e.EnableLog&&console.error(r)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,n){switch(t.name){case"NotFoundError":var r=e.Utils.getError(e.ErrorType.TableNotExist,n);e.throwError(r);default:console.error(t)}},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n},this.getObjectSecondKey=function(e){var t=!1;for(var n in e){if(t)return n;t=!0}},this.goToWhereLogic=function(){var t=e.getObjectFirstKey(this.Query.Where);if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("object"==typeof n){this.CheckFlag=Boolean(Object.keys(n).length>1||Object.keys(this.Query.Where).length>1);var r=e.getObjectFirstKey(n);switch(r){case"Like":var o=n.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":for(var s=0;s":case"<":case">=":case"<=":this.executeWhereLogic(t,n,r);break;default:this.executeWhereLogic(t,n)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)},this.getPrimaryKey=function(e){var t=this.getTable(e).PrimaryKey;return t||this.getKeyPath()},this.getKeyPath=function(e){return t.DbConnection.transaction([e],"readonly").objectStore(e).keyPath}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;if("object"==typeof s)for(var u in s){if(!r)break;switch(u){case"In":!function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(i=o.indexOf(u.toLowerCase()))<0&&(r=!1);break;case e.Occurence.First:((i=o.indexOf(u.toLowerCase()))>0||i<0)&&(r=!1);break;default:(i=o.lastIndexOf(u.toLowerCase()))":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":t<=s&&(r=!1);break;case"<":t>=s&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],u)}}else if(s!=t[o]){r=!1;break}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=[],u=indexedDB.open(t.ActiveDataBase.Name,n);u.onerror=function(e){null!=o&&o(e.target.error)},u.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=r&&r(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},u.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),i(n,e)):e.RequireCreation&&i(n,e)})};var i=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}s.push(n.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){this.deleteDb=function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("database is blocked, cant be deleted right now.")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),r()}};var s=this;t.DbConnection.close(),setTimeout(function(){s.deleteDb(n,r,o)},100)}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.checkAndModifyValues=function(e){var t=this,n=function(r){r?t.checkAndModifyValue(r,function(){t.ErrorOccured?t.onErrorOccured(t.Error,!0):n(t.Query.Values[t.ValuesIndex++])}):(t.ValuesIndex=0,e())};n(this.Query.Values[this.ValuesIndex++])},u.insertData=function(){var e=this,n=this.Query.Return,r=function(t){if(t){var o=e.ObjectStore.add(t);o.onerror=function(t){e.onErrorOccured(t)},o.onsuccess=n?function(n){e.ValuesAffected.push(t)}:function(t){++e.RowAffected},r(e.Query.Values[e.ValuesIndex++])}};e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},r(this.Query.Values[e.ValuesIndex++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;var i=u;if(u.Table=u.getTable(r.Into),u.Table)u.Query.SkipDataCheck?i.insertData():u.checkAndModifyValues(function(){i.insertData()});else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r.prototype.checkAndModifyValue=function(n,r){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)},l=function(){c.NotNull&&e.isNull(n[c.Name])?a(e.ErrorType.NullValue,{ColumnName:c.Name}):c.DataType&&typeof n[c.Name]!=c.DataType&&a(e.ErrorType.BadDataType,{ColumnName:c.Name}),i(o.Table.Columns[u++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),l()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,l()):l()}else r()};i(o.Table.Columns[u++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.bulkinsertData=function(){var e=this;this.Transaction=t.DbConnection.transaction([this.Query.Into],"readwrite"),this.ObjectStore=this.Transaction.objectStore(this.Query.Into),this.Transaction.oncomplete=function(t){e.OnSuccess()},this.Query.Values.forEach(function(t){e.ObjectStore.add(t)})};try{u.Query=r,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(r.Into),u.Table)u.bulkinsertData();else{var i=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(i)}}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r}(t.Base);t.BulkInsert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=r&&r()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){switch(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),n.Name){case"create_db":case"open_db":this.executeLogic(n);break;case"change_log_status":this.changeLogStatus(n);default:switch(e.Status.ConStatus){case e.ConnectionStatus.Connected:this.executeLogic(n);break;case e.ConnectionStatus.Closed:var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}}},this.changeLogStatus=function(t){!0===t.Query.logging?e.EnableLog=!0:e.EnableLog=!1},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"bulk_insert":this.bulkInsert(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){Array.isArray(n.Values)?new t.Insert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.bulkInsert=function(n,r,o){Array.isArray(n.Values)?new t.BulkInsert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.Sorted=!1,t.CheckFlag=!1,t.removeDuplicates=function(){var e=this.Results;this.Results=void 0;var t=this.getPrimaryKey(this.Query.From),n={};for(var r in e)n[e[r][t]]=e[r];e=[];for(r in n)e.push(n[r]);this.Results=e},t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n,r=this;if(this.Query.Order&&this.Query.Order.By)if(r.ObjectStore.indexNames.contains(this.Query.Order.By)){var o=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,n=this.ObjectStore.index(r.Query.Order.By).openCursor(null,o)}else{var s=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(s)}else n=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;n.onsuccess=function(n){(t=n.target.result)&&(e&&r.Results.length!=r.LimitRecord?(r.Results.push(t.value),t.continue()):(e=!0,t.advance(r.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;n.onsuccess=function(n){(t=n.target.result)&&(e?(r.Results.push(t.value),t.continue()):(e=!0,t.advance(r.SkipRecord)))}}():this.LimitRecord?n.onsuccess=function(e){(t=e.target.result)&&r.Results.length!=r.LimitRecord&&(r.Results.push(t.value),t.continue())}:n.onsuccess=function(e){(t=e.target.result)&&(r.Results.push(t.value),t.continue())},n.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e,t=this.SkipRecord,n=this,r=function(e){0==t?n.Results.push(e):--t};n.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,n.Results.length!=n.LimitRecord&&e&&(n.filterOnOccurence(e.value)&&n.checkForWhereConditionMatch(e.value)&&r(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,n.Results.length!=n.LimitRecord&&e&&(n.filterOnOccurence(e.value)&&r(e.value),e.continue())}},n.executeSkip=function(){var e,t=this.SkipRecord,n=this,r=function(e){0==t?n.Results.push(e):--t};n.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(n.filterOnOccurence(e.value)&&n.checkForWhereConditionMatch(e.value)&&r(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(n.filterOnOccurence(e.value)&&r(e.value),e.continue())}},n.executeLimit=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(n){e=n.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(n){e=n.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},n.executeSimple=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(n){(e=n.target.result)&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(n){(e=n.target.result)&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.LimitRecord?s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&s.checkForWhereConditionMatch(o.value)&&(s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&(s.Results.push(o.value),o.continue())}:s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&(s.Results.push(o.value),o.continue())}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;ir.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){var e=this.Query.Order;if(e&&this.Results.length>0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]})),this.OnSuccess(this.Results)}else this.SendResultFlag&&this.OnSuccess(this.Results)},u.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readonly"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.orQuerySuccess=function(){this.Results=this.OrInfo.Results,this.OrInfo.Results=void 0,this.removeDuplicates(),this.OrInfo.OnSucess(this.Results)},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess,Results:[]},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){if(this.OrInfo.Results=this.OrInfo.Results.concat(this.Results),!this.Query.Limit||this.Query.Limit>this.OrInfo.Results.length){this.Results=[];var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.orQuerySuccess()}else this.orQuerySuccess()}};var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s,u.SkipRecord=u.Query.Skip,u.LimitRecord=u.Query.Limit;try{u.Transaction=t.DbConnection.transaction([r.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.Transaction.ontimeout=i.onTransactionCompleted,u.ObjectStore=u.Transaction.objectStore(r.From),r.Where?(r.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:r.From})}return u}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var n,r=this.ObjectStore.openCursor();r.onsuccess=function(t){(n=t.target.result)&&(++e.ResultCount,n.continue())},r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.value)&&o.checkForWhereConditionMatch(r.value)&&++o.ResultCount,r.continue())}:this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.value)&&++o.ResultCount,r.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r=this;if(t=n?t[n]:t,r.CheckFlag){(u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){(s=e.target.result)&&(r.checkForWhereConditionMatch(s.value)&&++r.ResultCount,s.continue())},u.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else if(this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,n));o.onsuccess=function(){r.ResultCount=o.result},o.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else{var s,u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n));u.onsuccess=function(e){(s=e.target.result)&&(++r.ResultCount,s.continue())},u.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o;try{var i=function(){u.Transaction=e.DbConnection.transaction([n.From],"readonly"),u.ObjectStore=u.Transaction.objectStore(n.From),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};void 0!=n.Where?n.Where.Or?new e.Select.Instance(n,function(e){u.ResultCount=e.length,u.onTransactionCompleted()},s.OnError):(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e,n=this,r=this.ObjectStore.openCursor();r.onsuccess=function(r){(e=r.target.result)&&(e.update(t.updateValue(n.Query.Set,e.value)),++n.RowAffected,e.continue())},r.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o,s=this;this.CompValue=n.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},s.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&s.checkForWhereConditionMatch(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}:this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}},r}return __extends(r,n),r}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereLogic=function(t,n,r){var o,s,u=this;n=r?n[r]:n,s=this.ObjectStore.index(t).openCursor(this.getKeyRange(n,r)),u.CheckFlag?s.onsuccess=function(t){(o=t.target.result)&&(u.checkForWhereConditionMatch(o.value)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected),o.continue())}:s.onsuccess=function(t){(o=t.target.result)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected,o.continue())},s.onerror=function(e){u.ErrorOccured=!0,u.onErrorOccured(e)}},n}return __extends(n,t),n}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},s.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.In],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.In),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},s.executeOrLogic=function(){var e=this;new t.Select.Instance({From:this.Query.In,Where:this.Query.Where},function(t){var n=e.getPrimaryKey(e.Query.In),r=[],o={};t.forEach(function(e){r.push(e[n])}),o[n]={In:r},e.createtransactionForOrLogic({In:e.Query.In,Where:o,Set:e.Query.Set})},this.OnError)};try{if(s.OnSuccess=r,s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e;var u=s,i=function(){u.Transaction=t.DbConnection.transaction([e.In],"readwrite"),u.ObjectStore=u.Transaction.objectStore(e.In),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};e.Where?e.Where.Or?s.executeOrLogic():(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){if(t){var r=this.getTable(n),o=this;if(r){var s=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)};r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){!function(t){if(n.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:n.Name}),n.DataType){var r=typeof t;if(r!=n.DataType)if("object"!=r)s(e.ErrorType.BadDataType,{ColumnName:n.Name});else{var o=["+","-","*","/"];for(var u in t){o.indexOf(u)<0&&s(e.ErrorType.BadDataType,{ColumnName:n.Name});break}}}}(t[n.Name])}return!0})}else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n});e.throwError(u)}}else this.ErrorOccured=!0,this.OnSuccess(0)},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e,t=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){(e=n.target.result)&&(e.delete(),++t.RowAffected,e.continue())},n.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.value)&&o.checkForWhereConditionMatch(r.value)&&(r.delete(),++o.RowAffected),r.continue())}:this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.value)&&(r.delete(),++o.RowAffected),r.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,o=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),s.CheckFlag?o.onsuccess=function(e){(r=e.target.result)&&(s.checkForWhereConditionMatch(r.value)&&(r.delete(),++s.RowAffected),r.continue())}:o.onsuccess=function(e){(r=e.target.result)&&(r.delete(),++s.RowAffected,r.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},u.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.OrInfo.OnSucess(this.RowAffected)}};try{var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s,u.Transaction=t.DbConnection.transaction([r.From],"readwrite"),u.ObjectStore=u.Transaction.objectStore(r.From),u.Transaction.oncomplete=function(){i.onTransactionCompleted()},u.Transaction.onerror=function(e){i.onErrorOccured(e)},r.Where?(r.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:r.From})}return u}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(t){if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)switch(t.Name){case"create_db":case"open_db":this.RequestQueue.splice(0,0,t),e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode(),e.Status.ConStatus=e.ConnectionStatus.Connected;break;default:this.RequestQueue.push(t)}else this.RequestQueue.push(t),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode();e.EnableLog&&console.log("request pushed: "+t.Name)},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],n={Name:t.Name,Query:t.Query};e.EnableLog&&console.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished : "+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,e.Status.ConStatus==e.ConnectionStatus.NotStarted&&this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var n=this.getScriptUrl();n&&n.length>0?(e.WorkerInstance=new Worker(n),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},t.executeCodeUsingWorker({Name:"change_log_status",Query:{logging:e.EnableLog}}),setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),e.Status.ConStatus==e.ConnectionStatus.Connected&&t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){void 0===n&&(n=null);var r=t.call(this)||this;return r.openDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"open_db",Query:e,OnSuccess:t,OnError:n}),this},r.createDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},r.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},r.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},r.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},r.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},r.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},r.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},r.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},r.bulkInsert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"bulk_insert",Query:e,OnSuccess:r,OnError:o}),this},e.WorkerStatus==e.WebWorkerStatus.Registered?e.WorkerInstance.terminate():e.WorkerStatus==e.WebWorkerStatus.NotStarted&&KeyStore.init(),r.createWorker(),n&&r.openDb(n),r}return __extends(n,t),n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self&&!self.alert&&(self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name: "+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)},JsStore.WorkerStatus=JsStore.WebWorkerStatus.Registered,KeyStore.init()); \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.2/JsStore-1.2.2.d.ts b/Dist/V 1.2/V 1.2.2/JsStore-1.2.2.d.ts deleted file mode 100644 index ab2e6000..00000000 --- a/Dist/V 1.2/V 1.2.2/JsStore-1.2.2.d.ts +++ /dev/null @@ -1,947 +0,0 @@ -/** JsStore.js - v1.2.2 - 21/10/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - IndexedDbUndefined = "indexeddb_undefined", - IndexedDbBlocked = "indexeddb_blocked", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - UnableToStart = "unable_to_start", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - GroupBy: any; - Aggregate: { - Max: any; - Min: any; - Count: any; - Sum: any; - Avg: any; - }; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipDataCheck: any; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - interface IError { - Name: string; - Message: string; - } - interface IAggregate { - Max: Array; - Min: Array; - Sum: Array; - Count: Array; - Avg: Array; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus, TempResults: Array; - var throwError: (error: any) => never; - var getObjectFirstKey: (value: any) => string; -} -declare module JsStore { - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack?: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; - /** - * get the results in file by file type - * - * @param {*} qry - * @param {string} type - */ - var getFile: (qry: any, data: any, type?: string) => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - SendResultFlag: Boolean; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - protected getObjectSecondKey: (value: any) => string; - protected goToWhereLogic: () => void; - protected getPrimaryKey: (tableName: any) => any; - private getKeyPath; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - deleteDb: (name: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private checkAndModifyValues; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class BulkInsert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private bulkinsertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private changeLogStatus; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - bulkInsert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - exportJson: (query: ISelect, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - protected removeDuplicates: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class GroupByHelper extends Where { - constructor(); - private executeAggregateGroupBy; - protected processGroupBy: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Helper extends GroupByHelper { - processOrderBy: () => void; - private processAggregateQry; - constructor(); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Helper { - onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private orQuerySuccess; - private executeOrLogic; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - protected onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends NotWhere { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - openDb: (dbName: string, onSuccess?: Function, onError?: Function) => any; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - createDb: (dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function) => any; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb: (onSuccess: Function, onError?: Function) => any; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select: (query: ISelect, onSuccess?: Function, onError?: Function) => any; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count: (query: ICount, onSuccess?: Function, onError?: Function) => any; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update: (query: IUpdate, onSuccess?: Function, onError?: Function) => any; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete: (query: IDelete, onSuccess?: Function, onError?: Function) => any; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear: (tableName: string, onSuccess?: Function, onError?: Function) => any; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - bulkInsert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - /** - * export the result in json file - * - * @param {ISelect} qry - * @memberof Instance - */ - exportJson: (query: ISelect) => void; - } -} -export = JsStore; \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.2/JsStore-1.2.2.js b/Dist/V 1.2/V 1.2.2/JsStore-1.2.2.js deleted file mode 100644 index a26e0311..00000000 --- a/Dist/V 1.2/V 1.2.2/JsStore-1.2.2.js +++ /dev/null @@ -1,4354 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.2.2 - 21/10/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var KeyStore; -(function (KeyStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbUndefined - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = /** @class */ (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = /** @class */ (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = /** @class */ (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = /** @class */ (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbBlocked, - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - ErrorType["IndexedDbUndefined"] = "indexeddb_undefined"; - ErrorType["IndexedDbBlocked"] = "indexeddb_blocked"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["UnableToStart"] = "unable_to_start"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }, JsStore.TempResults = []; - JsStore.throwError = function (error) { - throw error; - }; - JsStore.getObjectFirstKey = function (value) { - for (var key in value) { - return key; - } - return null; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (errCallBack === void 0) { errCallBack = null; } - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - else { - if (errCallBack) { - var Error = { - Name: JsStore.Status.LastError, - Message: '' - }; - switch (Error.Name) { - case JsStore.ErrorType.IndexedDbBlocked: - Error.Message = "IndexedDB is blocked"; - break; - case JsStore.ErrorType.IndexedDbUndefined: - Error.Message = "IndexedDB is not supported"; - break; - } - errCallBack(Error); - } - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; - /** - * get the results in file by file type - * - * @param {*} qry - * @param {string} type - */ - JsStore.getFile = function (qry, data, type) { - if (type === void 0) { type = null; } - var downloadJson = function (qry) { - // var Result = []; - // var Table = document.querySelector('#divResultSQL table tbody'); - // for (var i = 1, rowLength = Table.rows.length; i < rowLength; i++) { - // var Obj = {}; - // for (var j = 0, colLength = Table.rows[i].cells.length; j < colLength; j++) { - // if (j == 1 || j == 4) { - // Obj[Table.rows[0].cells[j].innerText] = Table.rows[i].cells[j].innerText; - // } else { - // Obj[Table.rows[0].cells[j].innerText] = Number(Table.rows[i].cells[j].innerText); - // } - // } - // Result.push(Obj); - // } - // var a = document.createElement("a"); - // var file = new Blob([JSON.stringify(Result)], { - // type: "text/json" - // }); - // a.href = URL.createObjectURL(file); - // a.download = fileName + ".json"; - // a.click(); - }; - switch (type.toLowerCase()) { - case 'csv': - default: downloadJson(qry); - } - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = /** @class */ (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = /** @class */ (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = /** @class */ (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.SendResultFlag = true; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - this.getObjectSecondKey = function (value) { - var IsSecond = false; - for (var key in value) { - if (IsSecond) { - return key; - } - else { - IsSecond = true; - } - } - }; - this.goToWhereLogic = function () { - var Column = JsStore.getObjectFirstKey(this.Query.Where); - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1); - var Key = JsStore.getObjectFirstKey(Value); - switch (Key) { - case 'Like': - { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - ; - break; - case 'In': - { - for (var i = 0; i < Value['In'].length; i++) { - this.executeWhereLogic(Column, Value['In'][i]); - } - } - ; - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - this.executeWhereLogic(Column, Value, Key); - break; - case 'Aggregate': break; - default: this.executeWhereLogic(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1); - this.executeWhereLogic(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - }; - this.getPrimaryKey = function (tableName) { - var PrimaryKey = this.getTable(tableName).PrimaryKey; - return PrimaryKey ? PrimaryKey : this.getKeyPath(); - }; - this.getKeyPath = function (tableName) { - var Transaction = Business.DbConnection.transaction([tableName], "readonly"), ObjectStore = Transaction.objectStore(tableName); - return ObjectStore.keyPath; - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - switch (CompSymbol) { - case JsStore.Occurence.Any: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - SymbolIndex = value.lastIndexOf(CompValue.toLowerCase()); - if (SymbolIndex < value.length - CompValue.length) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (value <= CompareValue) { - Status = false; - } - ; - break; - //less than - case '<': - if (value >= CompareValue) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - if (typeof ColumnValue == 'object') { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - else { - var CompareValue = rowValue[Column]; - if (ColumnValue != CompareValue) { - Status = false; - break; - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = /** @class */ (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = /** @class */ (function () { - function DropDb(name, onSuccess, onError) { - this.deleteDb = function (name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("database is blocked, cant be deleted right now."); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - onSuccess(); - }; - }; - var That = this; - Business.DbConnection.close(); - setTimeout(function () { - That.deleteDb(name, onSuccess, onError); - }, 100); - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = /** @class */ (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.checkAndModifyValues = function (callBack) { - var That = this, checkInternal = function (value) { - if (value) { - That.checkAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - That.ValuesIndex = 0; - callBack(); - } - }; - checkInternal(this.Query.Values[this.ValuesIndex++]); - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - if (IsReturn) { - AddResult.onsuccess = function (e) { - That.ValuesAffected.push(value); - }; - } - else { - AddResult.onsuccess = function (e) { - ++That.RowAffected; - }; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - } - }; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(this.Query.Values[That.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - if (_this.Query.SkipDataCheck) { - That.insertData(); - } - else { - _this.checkAndModifyValues(function () { - That.insertData(); - }); - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var BulkInsert = /** @class */ (function (_super) { - __extends(BulkInsert, _super); - function BulkInsert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.bulkinsertData = function () { - var That = this; - this.Transaction = Business.DbConnection.transaction([this.Query.Into], "readwrite"); - this.ObjectStore = this.Transaction.objectStore(this.Query.Into); - this.Transaction.oncomplete = function (e) { - That.OnSuccess(); - }; - this.Query.Values.forEach(function (value) { - That.ObjectStore.add(value); - }); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - _this.bulkinsertData(); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - return BulkInsert; - }(Business.Base)); - Business.BulkInsert = BulkInsert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = /** @class */ (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = /** @class */ (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - switch (request.Name) { - case 'create_db': - case 'open_db': - this.executeLogic(request); - break; - case 'change_log_status': - this.changeLogStatus(request); - default: - switch (JsStore.Status.ConStatus) { - case JsStore.ConnectionStatus.Connected: - { - this.executeLogic(request); - } - ; - break; - case JsStore.ConnectionStatus.Closed: - { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - ; - break; - } - } - }; - this.changeLogStatus = function (request) { - if (request.Query['logging'] === true) { - JsStore.EnableLog = true; - } - else { - JsStore.EnableLog = false; - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'bulk_insert': - this.bulkInsert(request.Query, OnSuccess, OnError); - break; - case 'export_json': - this.exportJson(request.Query, OnSuccess, OnError); - break; - default: console.error('The Api:-' + request.Name + 'does not support'); - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.bulkInsert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.BulkInsert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.exportJson = function (query, onSuccess, onError) { - this.select(query, function (results) { - var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], { - type: "text/json" - })); - onSuccess(Url); - }, function (err) { - onError(err); - }); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = /** @class */ (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.Sorted = false; - _this.CheckFlag = false; - _this.removeDuplicates = function () { - var Datas = this.Results; - //free results memory - this.Results = undefined; - var Key = this.getPrimaryKey(this.Query.From); - var lookupObject = {}; - for (var i in Datas) { - lookupObject[Datas[i][Key]] = Datas[i]; - } - //free datas memory - Datas = []; - for (i in lookupObject) { - Datas.push(lookupObject[i]); - } - this.Results = Datas; - }; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSkip = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLimit = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSimple = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.NotWhere)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest, Cursor, executeSkipAndLimit = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeSkip = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeLimit = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }, executeSimple = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = /** @class */ (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var GroupByHelper = /** @class */ (function (_super) { - __extends(GroupByHelper, _super); - function GroupByHelper() { - var _this = _super.call(this) || this; - _this.executeAggregateGroupBy = function () { - var GrpQry = this.Query.GroupBy, Datas = this.Results, LookUpObj = {}; - //free results memory - this.Results = undefined; - //assign aggregate and free aggregate memory - var AggregateQry = this.Query.Aggregate; - this.Query.Aggregate = undefined; - var Index, ObjKey, Value, AggrColumn; - var calculateAggregate = function () { - for (var prop in AggregateQry) { - switch (prop) { - case 'Count': - var getCount = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Count(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? 1 : 0; - return Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Count(" + AggrColumn + ")"] = getCount(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Count(" + AggrColumn + ")"] = getCount(); - } - } - break; - case 'Max': - var getMax = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Max(" + AggrColumn + ")"] : 0; - Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - //compare between old value and new value - return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn]; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Max(" + AggrColumn + ")"] = getMax(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Max(" + AggrColumn + ")"] = getMax(); - } - } - break; - case 'Min': - var getMin = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Min(" + AggrColumn + ")"] : Infinity; - Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity; - //compare between old value and new value - return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn]; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Min(" + AggrColumn + ")"] = getMin(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Min(" + AggrColumn + ")"] = getMin(); - } - } - break; - case 'Sum': - var getSum = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Sum(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - return Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Sum(" + AggrColumn + ")"] = getSum(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Sum(" + AggrColumn + ")"] = getSum(); - } - } - break; - case 'Avg': - var getAvg = function () { - Value = LookUpObj[ObjKey]; - //get old sum value - var Sum = Value ? Value["Sum(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - Datas[Index]["Sum(" + AggrColumn + ")"] = Sum; - //get old count value - Value = Value ? Value["Count(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? 1 : 0; - Datas[Index]["Count(" + AggrColumn + ")"] = Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - getAvg(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - getAvg(); - } - } - break; - } - } - }; - if (typeof GrpQry == 'string') { - for (Index in Datas) { - ObjKey = Datas[Index][GrpQry]; - calculateAggregate(); - LookUpObj[ObjKey] = Datas[Index]; - } - } - else { - for (Index in Datas) { - ObjKey = ""; - for (var column in GrpQry) { - ObjKey += Datas[Index][GrpQry[column]]; - } - calculateAggregate(); - LookUpObj[ObjKey] = Datas[Index]; - } - } - //free datas memory - Datas = []; - for (var i in LookUpObj) { - Datas.push(LookUpObj[i]); - } - //Checking for avg and if exist then fill the datas; - if (AggregateQry.Avg) { - if (typeof AggregateQry.Avg == 'string') { - for (Index in Datas) { - var Sum = Datas[Index]["Sum(" + AggregateQry.Avg + ")"], Count = Datas[Index]["Count(" + AggregateQry.Avg + ")"]; - Datas[Index]["Avg(" + AggregateQry.Avg + ")"] = Sum / Count; - if (AggregateQry.Count !== AggregateQry.Avg) { - delete Datas[Index]["Count(" + AggregateQry.Avg + ")"]; - } - if (AggregateQry.Sum !== AggregateQry.Avg) { - delete Datas[Index]["Sum(" + AggregateQry.Avg + ")"]; - } - } - } - else { - var IsCountTypeString = typeof AggregateQry.Count, IsSumTypeString = typeof AggregateQry.Count; - for (Index in Datas) { - for (var column in AggregateQry.Avg) { - var AvgColumn = AggregateQry.Avg[column], Sum = Datas[Index]["Sum(" + AvgColumn + ")"], Count = Datas[Index]["Count(" + AvgColumn + ")"]; - Datas[Index]["Avg(" + AvgColumn + ")"] = Sum / Count; - if (IsCountTypeString) { - if (AggregateQry.Count !== AvgColumn) { - delete Datas[Index]["Count(" + AvgColumn + ")"]; - } - else if (AggregateQry.Count.indexOf(AvgColumn) == -1) { - delete Datas[Index]["Count(" + AvgColumn + ")"]; - } - } - if (IsSumTypeString) { - if (AggregateQry.Sum !== AvgColumn) { - delete Datas[Index]["Sum(" + AvgColumn + ")"]; - } - else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) { - delete Datas[Index]["Sum(" + AvgColumn + ")"]; - } - } - } - } - } - } - this.Results = Datas; - }; - _this.processGroupBy = function () { - var GrpQry = this.Query.GroupBy, Datas = this.Results, LookUpObj = {}; - //free results memory - this.Results = this.Query.GroupBy = undefined; - if (typeof GrpQry == 'string') { - for (var i in Datas) { - LookUpObj[Datas[i][GrpQry]] = Datas[i]; - } - } - else { - var ObjKey; - for (var i in Datas) { - ObjKey = ""; - for (var column in GrpQry) { - ObjKey += Datas[i][GrpQry[column]]; - } - LookUpObj[ObjKey] = Datas[i]; - } - } - //free datas memory - Datas = []; - for (i in LookUpObj) { - Datas.push(LookUpObj[i]); - } - this.Results = Datas; - }; - return _this; - } - return GroupByHelper; - }(Select.Where)); - Select.GroupByHelper = GroupByHelper; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Helper = /** @class */ (function (_super) { - __extends(Helper, _super); - function Helper() { - var _this = _super.call(this) || this; - _this.processOrderBy = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - } - }; - _this.processAggregateQry = function () { - var Datas = this.Results, Results = {}, Key; - //free results memory - this.Results = undefined; - for (var prop in this.Query.Aggregate) { - switch (prop) { - case 'Count': - var getCount = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key] ? 1 : 0; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Count(" + Key + ")"] = getCount(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Count(" + Key + ")"] = getCount(); - } - } - break; - case 'Max': - var getMax = function () { - var Result = 0; - for (var i in Datas) { - Result = Result > Datas[i][Key] ? Result : Datas[i][Key]; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Max(" + Key + ")"] = getMax(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Max(" + Key + ")"] = getMax(); - } - } - break; - case 'Min': - var getMin = function () { - var Result = Infinity, Value = Infinity; - for (var i in Datas) { - Value = Datas[i][Key] ? Datas[i][Key] : Infinity; - Result = Result < Value ? Result : Value; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Min(" + Key + ")"] = getMin(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Min(" + Key + ")"] = getMin(); - } - } - break; - case 'Sum': - var getSum = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key]; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Sum(" + Key + ")"] = getSum(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Sum(" + Key + ")"] = getSum(); - } - } - break; - case 'Avg': - var getAvg = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key]; - } - ; - return Result / Datas.length; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Avg(" + Key + ")"] = getAvg(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Avg(" + Key + ")"] = getAvg(); - } - } - break; - } - } - //add results to the first index of result - for (var prop in Results) { - Datas[0][prop] = Results[prop]; - } - this.Results = Datas; - }; - return _this; - } - return Helper; - }(Select.GroupByHelper)); - Select.Helper = Helper; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.processOrderBy(); - if (this.Query.GroupBy) { - if (this.Query.Aggregate) { - this.executeAggregateGroupBy(); - } - else { - this.processGroupBy(); - } - } - else if (this.Query.Aggregate) { - this.processAggregateQry(); - } - this.OnSuccess(this.Results); - } - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.orQuerySuccess = function () { - this.Results = this.OrInfo.Results; - //free var memory - this.OrInfo.Results = undefined; - this.removeDuplicates(); - this.OrInfo.OnSucess(this.Results); - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess, - Results: [] - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - this.OrInfo.Results = this.OrInfo.Results.concat(this.Results); - if (!this.Query.Limit || (this.Query.Limit > this.OrInfo.Results.length)) { - this.Results = []; - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.orQuerySuccess(); - } - } - else { - this.orQuerySuccess(); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Helper)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = /** @class */ (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Count.NotWhere)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (That.CheckFlag) { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - That.ObjectStore = That.Transaction.objectStore(query.From); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where != undefined) { - if (query.Where.Or) { - new Business.Select.Instance(query, function (results) { - That.ResultCount = results.length; - That.onTransactionCompleted(); - }, _this.OnError); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = /** @class */ (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Update.NotWhere)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.In); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - var That = this; - new Business.Select.Instance({ - From: this.Query.In, - Where: this.Query.Where - }, function (results) { - var Key = That.getPrimaryKey(That.Query.In), InQuery = [], WhereQry = {}; - results.forEach(function (value) { - InQuery.push(value[Key]); - }); - WhereQry[Key] = { In: InQuery }; - That.createtransactionForOrLogic({ - In: That.Query.In, - Where: WhereQry, - Set: That.Query.Set - }); - }, this.OnError); - }; - try { - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - var That = _this; - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(query.In); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - if (suppliedValue) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - } - else { - this.ErrorOccured = true; - //execute onSuccess with supplying 0 as rows affected - this.OnSuccess(0); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = /** @class */ (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this, Cursor; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Delete.NotWhere)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.OrInfo.OnSucess(this.RowAffected); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = /** @class */ (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - switch (request.Name) { - case 'create_db': - case 'open_db': - this.RequestQueue.splice(0, 0, request); - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - ; - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - break; - default: this.RequestQueue.push(request); - } - } - else { - this.RequestQueue.push(request); - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - } - if (JsStore.EnableLog) { - console.log("request pushed: " + request.Name); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - if (JsStore.EnableLog) { - console.log("request executing : " + FirstRequest.Name); - } - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - this.executeCode(); - } - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - That.executeCodeUsingWorker({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - That.executeCode(); - } - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.openDb = function (dbName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName, - OnSuccess: onSuccess, - OnError: onError, - }); - return this; - }; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - _this.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - _this.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.bulkInsert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'bulk_insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * export the result in json file - * - * @param {ISelect} qry - * @memberof Instance - */ - _this.exportJson = function (query) { - var OnSuccess = function (url) { - var Link = document.createElement("a"); - Link.href = url; - Link.download = query.From + ".json"; - Link.click(); - if (OnSuccessCallBack) { - OnSuccessCallBack(); - } - }, OnError = query['OnError'], OnSuccessCallBack = query['OnSuccess']; - query['OnSuccess'] = query['OnError'] = undefined; - this.prcoessExecutionOfCode({ - Name: 'export_json', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - }; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - JsStore.WorkerInstance.terminate(); - } - else if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - KeyStore.init(); - } - _this.createWorker(); - if (dbName) { - _this.openDb(dbName); - } - return _this; - } - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -if (self && !self.alert) { - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name: " + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - KeyStore.init(); -} -//# sourceMappingURL=JsStore-1.2.2.js.map \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.2/JsStore-1.2.2.js.map b/Dist/V 1.2/V 1.2.2/JsStore-1.2.2.js.map deleted file mode 100644 index 7b56cec7..00000000 --- a/Dist/V 1.2/V 1.2.2/JsStore-1.2.2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.2.2.js","sourceRoot":"","sources":["../License.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../JsStore/enums.ts","../JsStore/interfaces.ts","../JsStore/CommonLogic.ts","../JsStore/UtilsLogic.ts","../JsStore/HelperLogic.ts","../JsStore/Model/Column.ts","../JsStore/Model/Table.ts","../JsStore/Model/DataBase.ts","../JsStore/Business/BaseLogic.ts","../JsStore/Business/CreateDbLogic.ts","../JsStore/Business/DropDbLogic.ts","../JsStore/Business/InsertLogic.ts","../JsStore/Business/BulkInsertLogic.ts","../JsStore/Business/OpenDbLogic.ts","../JsStore/Business/ClearLogic.ts","../JsStore/Business/MainLogic.ts","../JsStore/Business/Select/BaseSelectLogic.ts","../JsStore/Business/Select/NotWhereLogic.ts","../JsStore/Business/Select/LikeLogic.ts","../JsStore/Business/Select/WhereLogic.ts","../JsStore/Business/Select/JoinLogic.ts","../JsStore/Business/Select/GroupByHelperLogic.ts","../JsStore/Business/Select/HelperLogic.ts","../JsStore/Business/Select/InstanceLogic.ts","../JsStore/Business/Count/BaseCountLogic.ts","../JsStore/Business/Count/NotWhereLogic.ts","../JsStore/Business/Count/LikeLogic.ts","../JsStore/Business/Count/WhereLogic.ts","../JsStore/Business/Count/InstanceLogic.ts","../JsStore/Business/Update/BaseUpdateLogic.ts","../JsStore/Business/Update/NotWhereLogic.ts","../JsStore/Business/Update/LikeLogic.ts","../JsStore/Business/Update/WhereLogic.ts","../JsStore/Business/Update/InstanceLogic.ts","../JsStore/Business/Delete/BaseDeleteLogic.ts","../JsStore/Business/Delete/NotWhereLogic.ts","../JsStore/Business/Delete/LikeLogic.ts","../JsStore/Business/Delete/WhereLogic.ts","../JsStore/Business/Delete/InstanceLogic.ts","../JsStore/CodeExecutionHelper.ts","../JsStore/JsStoreInstance.ts","../JsStore/DirectCode.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.2.2 - 21/10/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder,\r\n GroupBy: any,\r\n Aggregate: {\r\n Max: any,\r\n Min: any,\r\n Count: any,\r\n Sum: any,\r\n Avg: any\r\n }\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipDataCheck\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n\r\n export interface IAggregate {\r\n Max: Array,\r\n Min: Array,\r\n Sum: Array,\r\n Count: Array,\r\n Avg: Array\r\n }\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n}","module JsStore {\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function = null) {\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n else {\r\n if (errCallBack) {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * get the results in file by file type\r\n * \r\n * @param {*} qry \r\n * @param {string} type \r\n */\r\n export var getFile = function (qry: any, data, type: string = null) {\r\n var downloadJson = function (qry) {\r\n // var Result = [];\r\n // var Table = document.querySelector('#divResultSQL table tbody');\r\n // for (var i = 1, rowLength = Table.rows.length; i < rowLength; i++) {\r\n // var Obj = {};\r\n // for (var j = 0, colLength = Table.rows[i].cells.length; j < colLength; j++) {\r\n // if (j == 1 || j == 4) {\r\n // Obj[Table.rows[0].cells[j].innerText] = Table.rows[i].cells[j].innerText;\r\n // } else {\r\n // Obj[Table.rows[0].cells[j].innerText] = Number(Table.rows[i].cells[j].innerText);\r\n // }\r\n // }\r\n // Result.push(Obj);\r\n // }\r\n // var a = document.createElement(\"a\");\r\n // var file = new Blob([JSON.stringify(Result)], {\r\n // type: \"text/json\"\r\n // });\r\n // a.href = URL.createObjectURL(file);\r\n // a.download = fileName + \".json\";\r\n // a.click(); \r\n }\r\n switch (type.toLowerCase()) {\r\n case 'csv':\r\n default: downloadJson(qry);\r\n }\r\n }\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In': {\r\n for (var i = 0; i < Value['In'].length; i++) {\r\n this.executeWhereLogic(Column, Value['In'][i])\r\n }\r\n }; break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n case 'Aggregate': break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n DbConnection.close();\r\n setTimeout(function () {\r\n That.deleteDb(name, onSuccess, onError);\r\n }, 100);\r\n }\r\n\r\n deleteDb = function (name: string, onSuccess: Function, onError: Function) {\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"database is blocked, cant be deleted right now.\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n onSuccess();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private checkAndModifyValues = function (callBack) {\r\n var That = this,\r\n checkInternal = function (value) {\r\n if (value) {\r\n That.checkAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n That.ValuesIndex = 0;\r\n callBack();\r\n }\r\n };\r\n checkInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n if (IsReturn) {\r\n AddResult.onsuccess = function (e) {\r\n That.ValuesAffected.push(value);\r\n }\r\n }\r\n else {\r\n AddResult.onsuccess = function (e) {\r\n ++That.RowAffected;\r\n }\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(this.Query.Values[That.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n if (this.Query.SkipDataCheck) {\r\n That.insertData();\r\n }\r\n else {\r\n this.checkAndModifyValues(function () {\r\n That.insertData();\r\n });\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the value based on defined schema and modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BulkInsert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private bulkinsertData = function () {\r\n var That = this;\r\n this.Transaction = DbConnection.transaction([this.Query.Into], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(this.Query.Into);\r\n this.Transaction.oncomplete = function (e) {\r\n That.OnSuccess();\r\n }\r\n this.Query.Values.forEach(function (value) {\r\n That.ObjectStore.add(value);\r\n });\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.bulkinsertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.executeLogic(request);\r\n break;\r\n case 'change_log_status':\r\n this.changeLogStatus(request);\r\n default:\r\n switch (Status.ConStatus) {\r\n case ConnectionStatus.Connected: {\r\n this.executeLogic(request);\r\n }; break;\r\n case ConnectionStatus.Closed: {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }; break;\r\n }\r\n }\r\n }\r\n\r\n private changeLogStatus = function (request) {\r\n if (request.Query['logging'] === true) {\r\n EnableLog = true;\r\n }\r\n else {\r\n EnableLog = false;\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'bulk_insert': this.bulkInsert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'export_json': this.exportJson(request.Query, OnSuccess, OnError);\r\n break;\r\n default: console.error('The Api:-' + request.Name + 'does not support');\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public bulkInsert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new BulkInsert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n\r\n public exportJson = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n this.select(query, function (results) {\r\n var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], {\r\n type: \"text/json\"\r\n }));\r\n onSuccess(Url);\r\n }, function (err) {\r\n onError(err);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class GroupByHelper extends Where {\r\n constructor() {\r\n super();\r\n }\r\n\r\n private executeAggregateGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = undefined;\r\n //assign aggregate and free aggregate memory\r\n var AggregateQry = this.Query.Aggregate;\r\n this.Query.Aggregate = undefined;\r\n var Index, ObjKey, Value, AggrColumn;\r\n var calculateAggregate = function () {\r\n for (var prop in AggregateQry) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Max(\" + AggrColumn + \")\"] : 0;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n //compare between old value and new value\r\n return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Min(\" + AggrColumn + \")\"] : Infinity;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity;\r\n //compare between old value and new value\r\n return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old sum value\r\n var Sum = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = Sum;\r\n //get old count value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = Value;\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n getAvg();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (typeof GrpQry == 'string') {\r\n for (Index in Datas) {\r\n ObjKey = Datas[Index][GrpQry];\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n }\r\n else {\r\n for (Index in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[Index][GrpQry[column]];\r\n }\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (var i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n //Checking for avg and if exist then fill the datas;\r\n if (AggregateQry.Avg) {\r\n if (typeof AggregateQry.Avg == 'string') {\r\n for (Index in Datas) {\r\n var Sum = Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"],\r\n Count = Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n Datas[Index][\"Avg(\" + AggregateQry.Avg + \")\"] = Sum / Count;\r\n if (AggregateQry.Count !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n }\r\n if (AggregateQry.Sum !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"];\r\n }\r\n }\r\n }\r\n else {\r\n var IsCountTypeString = typeof AggregateQry.Count,\r\n IsSumTypeString = typeof AggregateQry.Count;\r\n for (Index in Datas) {\r\n for (var column in AggregateQry.Avg) {\r\n var AvgColumn = AggregateQry.Avg[column],\r\n Sum = Datas[Index][\"Sum(\" + AvgColumn + \")\"],\r\n Count = Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n Datas[Index][\"Avg(\" + AvgColumn + \")\"] = Sum / Count;\r\n\r\n if (IsCountTypeString) {\r\n if (AggregateQry.Count !== AvgColumn) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Count.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n\r\n if (IsSumTypeString) {\r\n if (AggregateQry.Sum !== AvgColumn) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.Results = Datas;\r\n };\r\n\r\n protected processGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = this.Query.GroupBy = undefined;\r\n if (typeof GrpQry == 'string') {\r\n for (var i in Datas) {\r\n LookUpObj[Datas[i][GrpQry]] = Datas[i];\r\n }\r\n }\r\n else {\r\n var ObjKey;\r\n for (var i in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[i][GrpQry[column]];\r\n }\r\n LookUpObj[ObjKey] = Datas[i];\r\n }\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Helper extends GroupByHelper {\r\n processOrderBy = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private processAggregateQry = function () {\r\n var Datas = this.Results,\r\n Results = {},\r\n Key;\r\n //free results memory\r\n this.Results = undefined;\r\n for (var prop in this.Query.Aggregate) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key] ? 1 : 0;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result = Result > Datas[i][Key] ? Result : Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n var Result = Infinity, Value = Infinity;\r\n for (var i in Datas) {\r\n Value = Datas[i][Key] ? Datas[i][Key] : Infinity;\r\n Result = Result < Value ? Result : Value;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result / Datas.length;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n //add results to the first index of result\r\n for (var prop in Results) {\r\n Datas[0][prop] = Results[prop];\r\n }\r\n this.Results = Datas;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Helper {\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.processOrderBy();\r\n if (this.Query.GroupBy) {\r\n if (this.Query.Aggregate) {\r\n this.executeAggregateGroupBy();\r\n }\r\n else {\r\n this.processGroupBy();\r\n }\r\n }\r\n else if (this.Query.Aggregate) {\r\n this.processAggregateQry();\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (That.CheckFlag) {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n protected onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends NotWhere {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this,\r\n Cursor: IDBCursorWithValue;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.RequestQueue.splice(0, 0, request);\r\n if (WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n };\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n break;\r\n default: this.RequestQueue.push(request);\r\n }\r\n }\r\n else {\r\n this.RequestQueue.push(request);\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n if (EnableLog) {\r\n console.log(\"request pushed: \" + request.Name);\r\n }\r\n\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + FirstRequest.Name)\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n protected createWorker = function () {\r\n var That: CodeExecutionHelper = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n That.executeCodeUsingWorker({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n That.executeCode();\r\n }\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n WorkerInstance.terminate();\r\n }\r\n else if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n KeyStore.init();\r\n }\r\n this.createWorker();\r\n if (dbName) {\r\n this.openDb(dbName);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * open database\r\n * \r\n * @param {string} dbName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n openDb = function (dbName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName,\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {Model.IDataBase} dataBase \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n createDb = function (dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb = function (onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select = function (query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count = function (query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update = function (query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete = function (query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear = function (tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * insert bulk amount of data\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n bulkInsert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'bulk_insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * export the result in json file\r\n * \r\n * @param {ISelect} qry \r\n * @memberof Instance\r\n */\r\n exportJson = function (query: ISelect) {\r\n var OnSuccess = function (url) {\r\n var Link = document.createElement(\"a\");\r\n Link.href = url;\r\n Link.download = query.From + \".json\";\r\n Link.click();\r\n if (OnSuccessCallBack) {\r\n OnSuccessCallBack();\r\n }\r\n },\r\n OnError = query['OnError'],\r\n OnSuccessCallBack = query['OnSuccess'];\r\n query['OnSuccess'] = query['OnError'] = undefined;\r\n this.prcoessExecutionOfCode({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n\r\n }\r\n }\r\n}\r\n","if (self && !self.alert) {\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name: \" + e.data.Name);\r\n }\r\n var Request = e.data,\r\n IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered;\r\n KeyStore.init();\r\n}\r\n\r\n"]} \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.2/JsStore-1.2.2.min.js b/Dist/V 1.2/V 1.2.2/JsStore-1.2.2.min.js deleted file mode 100644 index efcf6e19..00000000 --- a/Dist/V 1.2/V 1.2.2/JsStore-1.2.2.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.2.2 - 21/10/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError?n.OnError(t.ErrorDetails):console.log(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}}(t,this.Query.Where[t]);break}};var i=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(i.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){console.error(e)}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}}(t,e.Query.Where[t]);break}};var i=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(i.RowAffected)},s.Transaction.onerror=function(e){i.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var n=function(){return function(n,r,o,s){var i=self.indexedDB.open(n,1);i.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},i.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=i.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},i.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName,function(){r.checkConnectionAndExecuteLogic(n)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={}));var JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.TempResults=[],e.throwError=function(e){throw e},e.getObjectFirstKey=function(e){for(var t in e)return t;return null}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,n){var r={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:r.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:r.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:r.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:r.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:r.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:r.Message="No value supplied";break;case e.ErrorType.InvalidOp:r.Message="Invalid Op Value '"+n.Op+"'";break;case e.ErrorType.ColumnNotExist:r.Message="Column '"+n.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:r.Message="Null value is not allowed for column '"+n.ColumnName+"'";break;case e.ErrorType.BadDataType:r.Message="Supplied value for column '"+n.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:r.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:r.Message="Table '"+n.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:r.Message="Database '"+n.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return r},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,n,r){if(void 0===r&&(r=null),e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})}else if(r){var o={Name:e.Status.LastError,Message:""};switch(o.Name){case e.ErrorType.IndexedDbBlocked:o.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:o.Message="IndexedDB is not supported"}r(o)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})},e.disableLog=function(){e.EnableLog=!1,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})},e.getFile=function(e,t,n){void 0===n&&(n=null);n.toLowerCase()}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(t,n){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+n),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:en.Version?e.DbVersion:n.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+n.Name+"_Version",e.DbVersion),n.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){function n(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.SendResultFlag=!0,this.onErrorOccured=function(t,n){if(void 0===n&&(n=!1),1==++this.ErrorCount&&null!=this.OnError){if(n)this.OnError(t);else{var r={Name:t.target.error.name,Message:t.target.error.message};this.OnError(r)}e.EnableLog&&console.error(r)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,n){switch(t.name){case"NotFoundError":var r=e.Utils.getError(e.ErrorType.TableNotExist,n);e.throwError(r);default:console.error(t)}},this.getTable=function(e){var n;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(n=t,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n},this.getObjectSecondKey=function(e){var t=!1;for(var n in e){if(t)return n;t=!0}},this.goToWhereLogic=function(){var t=e.getObjectFirstKey(this.Query.Where);if(this.ObjectStore.indexNames.contains(t)){var n=this.Query.Where[t];if("object"==typeof n){this.CheckFlag=Boolean(Object.keys(n).length>1||Object.keys(this.Query.Where).length>1);var r=e.getObjectFirstKey(n);switch(r){case"Like":var o=n.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":for(var s=0;s":case"<":case">=":case"<=":this.executeWhereLogic(t,n,r);break;case"Aggregate":break;default:this.executeWhereLogic(t,n)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)},this.getPrimaryKey=function(e){var t=this.getTable(e).PrimaryKey;return t||this.getKeyPath()},this.getKeyPath=function(e){return t.DbConnection.transaction([e],"readonly").objectStore(e).keyPath}}return n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0;for(var o in n){var s=n[o];if(!r)break;if("object"==typeof s)for(var i in s){if(!r)break;switch(i){case"In":!function(e,t){for(var o=n[e].In,s=0,i=o.length;s2?e.Occurence.Any:e.Occurence.Last):(i=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(u=o.indexOf(i.toLowerCase()))<0&&(r=!1);break;case e.Occurence.First:((u=o.indexOf(i.toLowerCase()))>0||u<0)&&(r=!1);break;default:(u=o.lastIndexOf(i.toLowerCase()))":case"<":case">=":case"<=":!function(e,t,o){var s=n[e][o];switch(o){case">":t<=s&&(r=!1);break;case"<":t>=s&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}}(o,t[o],i)}}else if(s!=t[o]){r=!1;break}}return r},n}();t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){var s=[],i=indexedDB.open(t.ActiveDataBase.Name,n);i.onerror=function(e){null!=o&&o(e.target.error)},i.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=i.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=r&&r(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},i.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),u(n,e)):e.RequireCreation&&u(n,e)})};var u=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}s.push(n.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){console.error(e)}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){this.deleteDb=function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("database is blocked, cant be deleted right now.")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),r()}};var s=this;t.DbConnection.close(),setTimeout(function(){s.deleteDb(n,r,o)},100)}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var i=n.call(this)||this;i.ValuesAffected=[],i.ValuesIndex=0,i.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},i.checkAndModifyValues=function(e){var t=this,n=function(r){r?t.checkAndModifyValue(r,function(){t.ErrorOccured?t.onErrorOccured(t.Error,!0):n(t.Query.Values[t.ValuesIndex++])}):(t.ValuesIndex=0,e())};n(this.Query.Values[this.ValuesIndex++])},i.insertData=function(){var e=this,n=this.Query.Return,r=function(t){if(t){var o=e.ObjectStore.add(t);o.onerror=function(t){e.onErrorOccured(t)},o.onsuccess=n?function(n){e.ValuesAffected.push(t)}:function(t){++e.RowAffected},r(e.Query.Values[e.ValuesIndex++])}};e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},r(this.Query.Values[e.ValuesIndex++])};try{i.Query=r,i.OnSuccess=o,i.OnError=s;var u=i;if(i.Table=i.getTable(r.Into),i.Table)i.Query.SkipDataCheck?u.insertData():i.checkAndModifyValues(function(){u.insertData()});else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(c)}}catch(e){i.onExceptionOccured(e,{TableName:r.Into})}return i}return __extends(r,n),r.prototype.checkAndModifyValue=function(n,r){var o=this,s=this.Table.Name,i=0,u=function(c){if(c){var a=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)},l=function(){c.NotNull&&e.isNull(n[c.Name])?a(e.ErrorType.NullValue,{ColumnName:c.Name}):c.DataType&&typeof n[c.Name]!=c.DataType&&a(e.ErrorType.BadDataType,{ColumnName:c.Name}),u(o.Table.Columns[i++])};o.ErrorOccured?r():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){n[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),l()}):c.Default&&null==n[c.Name]?(n[c.Name]=c.Default,l()):l()}else r()};u(o.Table.Columns[i++])},r}(t.Base);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(n){function r(r,o,s){var i=n.call(this)||this;i.ValuesAffected=[],i.ValuesIndex=0,i.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},i.bulkinsertData=function(){var e=this;this.Transaction=t.DbConnection.transaction([this.Query.Into],"readwrite"),this.ObjectStore=this.Transaction.objectStore(this.Query.Into),this.Transaction.oncomplete=function(t){e.OnSuccess()},this.Query.Values.forEach(function(t){e.ObjectStore.add(t)})};try{i.Query=r,i.OnSuccess=o,i.OnError=s;if(i.Table=i.getTable(r.Into),i.Table)i.bulkinsertData();else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(u)}}catch(e){i.onExceptionOccured(e,{TableName:r.Into})}return i}return __extends(r,n),r}(t.Base);t.BulkInsert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=r&&r()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,i=s,u=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return u.onsuccess=function(t){i.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value")}),null!=r&&r()},u.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){switch(e.EnableLog&&console.log("checking connection and executing request:"+n.Name),n.Name){case"create_db":case"open_db":this.executeLogic(n);break;case"change_log_status":this.changeLogStatus(n);default:switch(e.Status.ConStatus){case e.ConnectionStatus.Connected:this.executeLogic(n);break;case e.ConnectionStatus.Closed:var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}}},this.changeLogStatus=function(t){!0===t.Query.logging?e.EnableLog=!0:e.EnableLog=!1},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"bulk_insert":this.bulkInsert(e.Query,n,r);break;case"export_json":this.exportJson(e.Query,n,r);break;default:console.error("The Api:-"+e.Name+"does not support")}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){Array.isArray(n.Values)?new t.Insert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.bulkInsert=function(n,r,o){Array.isArray(n.Values)?new t.BulkInsert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var i=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):i()})},200)};i()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.exportJson=function(e,t,n){this.select(e,function(e){var n=URL.createObjectURL(new Blob([JSON.stringify(e)],{type:"text/json"}));t(n)},function(e){n(e)})},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.Sorted=!1,t.CheckFlag=!1,t.removeDuplicates=function(){var e=this.Results;this.Results=void 0;var t=this.getPrimaryKey(this.Query.From),n={};for(var r in e)n[e[r][t]]=e[r];e=[];for(r in n)e.push(n[r]);this.Results=e},t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n,r=this;if(this.Query.Order&&this.Query.Order.By)if(r.ObjectStore.indexNames.contains(this.Query.Order.By)){var o=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,n=this.ObjectStore.index(r.Query.Order.By).openCursor(null,o)}else{var s=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(s)}else n=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;n.onsuccess=function(n){(t=n.target.result)&&(e&&r.Results.length!=r.LimitRecord?(r.Results.push(t.value),t.continue()):(e=!0,t.advance(r.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;n.onsuccess=function(n){(t=n.target.result)&&(e?(r.Results.push(t.value),t.continue()):(e=!0,t.advance(r.SkipRecord)))}}():this.LimitRecord?n.onsuccess=function(e){(t=e.target.result)&&r.Results.length!=r.LimitRecord&&(r.Results.push(t.value),t.continue())}:n.onsuccess=function(e){(t=e.target.result)&&(r.Results.push(t.value),t.continue())},n.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e,t=this.SkipRecord,n=this,r=function(e){0==t?n.Results.push(e):--t};n.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,n.Results.length!=n.LimitRecord&&e&&(n.filterOnOccurence(e.value)&&n.checkForWhereConditionMatch(e.value)&&r(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,n.Results.length!=n.LimitRecord&&e&&(n.filterOnOccurence(e.value)&&r(e.value),e.continue())}},n.executeSkip=function(){var e,t=this.SkipRecord,n=this,r=function(e){0==t?n.Results.push(e):--t};n.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(n.filterOnOccurence(e.value)&&n.checkForWhereConditionMatch(e.value)&&r(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(n.filterOnOccurence(e.value)&&r(e.value),e.continue())}},n.executeLimit=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(n){e=n.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(n){e=n.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},n.executeSimple=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(n){(e=n.target.result)&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(n){(e=n.target.result)&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.LimitRecord?s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&s.checkForWhereConditionMatch(o.value)&&(s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&(s.Results.push(o.value),o.continue())}:s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&(s.Results.push(o.value),o.continue())}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],i=0,u=(n.Column,o.Results),c=u.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[i]={},e==t[n.Column]){s[i][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(u=0;ur.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=e.call(this)||this;return t.executeAggregateGroupBy=function(){var e=this.Query.GroupBy,t=this.Results,n={};this.Results=void 0;var r=this.Query.Aggregate;this.Query.Aggregate=void 0;var o,s,i,u,c=function(){for(var e in r)switch(e){case"Count":var c=function(){return i=n[s],i=i?i["Count("+u+")"]:0,i+=t[o][u]?1:0};if("string"==typeof r[e])u=r[e],t[o]["Count("+u+")"]=c();else if(Array.isArray(r[e]))for(var a in r[e])u=r[e][a],t[o]["Count("+u+")"]=c();break;case"Max":var l=function(){return i=n[s],i=i?i["Max("+u+")"]:0,t[o][u]=t[o][u]?t[o][u]:0,i>t[o][u]?i:t[o][u]};if("string"==typeof r[e])u=r[e],t[o]["Max("+u+")"]=l();else if(Array.isArray(r[e]))for(var a in r[e])u=r[e][a],t[o]["Max("+u+")"]=l();break;case"Min":var h=function(){return i=n[s],i=i?i["Min("+u+")"]:1/0,t[o][u]=t[o][u]?t[o][u]:1/0,i0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]}))}},t.processAggregateQry=function(){var e,t=this.Results,n={};this.Results=void 0;for(var r in this.Query.Aggregate)switch(r){case"Count":var o=function(){var n=0;for(var r in t)n+=t[r][e]?1:0;return n};if("string"==typeof this.Query.Aggregate[r])n["Count("+(e=this.Query.Aggregate[r])+")"]=o();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Count("+(e=this.Query.Aggregate[r][s])+")"]=o();break;case"Max":var i=function(){var n=0;for(var r in t)n=n>t[r][e]?n:t[r][e];return n};if("string"==typeof this.Query.Aggregate[r])n["Max("+(e=this.Query.Aggregate[r])+")"]=i();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Max("+(e=this.Query.Aggregate[r][s])+")"]=i();break;case"Min":var u=function(){var n=1/0,r=1/0;for(var o in t)n=n<(r=t[o][e]?t[o][e]:1/0)?n:r;return n};if("string"==typeof this.Query.Aggregate[r])n["Min("+(e=this.Query.Aggregate[r])+")"]=u();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Min("+(e=this.Query.Aggregate[r][s])+")"]=u();break;case"Sum":var c=function(){var n=0;for(var r in t)n+=t[r][e];return n};if("string"==typeof this.Query.Aggregate[r])n["Sum("+(e=this.Query.Aggregate[r])+")"]=c();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Sum("+(e=this.Query.Aggregate[r][s])+")"]=c();break;case"Avg":var a=function(){var n=0;for(var r in t)n+=t[r][e];return n/t.length};if("string"==typeof this.Query.Aggregate[r])n["Avg("+(e=this.Query.Aggregate[r])+")"]=a();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Avg("+(e=this.Query.Aggregate[r][s])+")"]=a()}for(var r in n)t[0][r]=n[r];this.Results=t},t}return __extends(t,e),t}(e.GroupByHelper);e.Helper=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var i=n.call(this)||this;i.onTransactionCompleted=function(){this.SendResultFlag&&(this.processOrderBy(),this.Query.GroupBy?this.Query.Aggregate?this.executeAggregateGroupBy():this.processGroupBy():this.Query.Aggregate&&this.processAggregateQry(),this.OnSuccess(this.Results))},i.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readonly"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},i.orQuerySuccess=function(){this.Results=this.OrInfo.Results,this.OrInfo.Results=void 0,this.removeDuplicates(),this.OrInfo.OnSucess(this.Results)},i.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess,Results:[]},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){if(this.OrInfo.Results=this.OrInfo.Results.concat(this.Results),!this.Query.Limit||this.Query.Limit>this.OrInfo.Results.length){this.Results=[];var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.orQuerySuccess()}else this.orQuerySuccess()}};var u=i;i.Query=r,i.OnSuccess=o,i.OnError=s,i.SkipRecord=i.Query.Skip,i.LimitRecord=i.Query.Limit;try{i.Transaction=t.DbConnection.transaction([r.From],"readonly"),i.Transaction.oncomplete=function(e){u.onTransactionCompleted()},i.Transaction.ontimeout=u.onTransactionCompleted,i.ObjectStore=i.Transaction.objectStore(r.From),r.Where?(r.Where.Or&&i.executeOrLogic(),i.goToWhereLogic()):i.executeWhereUndefinedLogic()}catch(e){i.onExceptionOccured(e,{TableName:r.From})}return i}return __extends(r,n),r}(n.Helper);n.Instance=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var n,r=this.ObjectStore.openCursor();r.onsuccess=function(t){(n=t.target.result)&&(++e.ResultCount,n.continue())},r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.value)&&o.checkForWhereConditionMatch(r.value)&&++o.ResultCount,r.continue())}:this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.value)&&++o.ResultCount,r.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r=this;if(t=n?t[n]:t,r.CheckFlag){(i=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){(s=e.target.result)&&(r.checkForWhereConditionMatch(s.value)&&++r.ResultCount,s.continue())},i.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else if(this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,n));o.onsuccess=function(){r.ResultCount=o.result},o.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else{var s,i=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n));i.onsuccess=function(e){(s=e.target.result)&&(++r.ResultCount,s.continue())},i.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&this.OnSuccess(this.ResultCount)};var i=s;s.Query=n,s.OnSuccess=r,s.OnError=o;try{var u=function(){i.Transaction=e.DbConnection.transaction([n.From],"readonly"),i.ObjectStore=i.Transaction.objectStore(n.From),i.Transaction.oncomplete=function(e){i.onTransactionCompleted()},i.Transaction.ontimeout=i.onTransactionTimeout};void 0!=n.Where?n.Where.Or?new e.Select.Instance(n,function(e){i.ResultCount=e.length,i.onTransactionCompleted()},s.OnError):(u(),s.goToWhereLogic()):(u(),s.executeWhereUndefinedLogic())}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e,n=this,r=this.ObjectStore.openCursor();r.onsuccess=function(r){(e=r.target.result)&&(e.update(t.updateValue(n.Query.Set,e.value)),++n.RowAffected,e.continue())},r.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o,s=this;this.CompValue=n.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},s.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&s.checkForWhereConditionMatch(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}:this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}},r}return __extends(r,n),r}(t.NotWhere);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereLogic=function(t,n,r){var o,s,i=this;n=r?n[r]:n,s=this.ObjectStore.index(t).openCursor(this.getKeyRange(n,r)),i.CheckFlag?s.onsuccess=function(t){(o=t.target.result)&&(i.checkForWhereConditionMatch(o.value)&&(o.update(e.updateValue(i.Query.Set,o.value)),++i.RowAffected),o.continue())}:s.onsuccess=function(t){(o=t.target.result)&&(o.update(e.updateValue(i.Query.Set,o.value)),++i.RowAffected,o.continue())},s.onerror=function(e){i.ErrorOccured=!0,i.onErrorOccured(e)}},n}return __extends(n,t),n}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},s.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.In],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.In),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},s.executeOrLogic=function(){var e=this;new t.Select.Instance({From:this.Query.In,Where:this.Query.Where},function(t){var n=e.getPrimaryKey(e.Query.In),r=[],o={};t.forEach(function(e){r.push(e[n])}),o[n]={In:r},e.createtransactionForOrLogic({In:e.Query.In,Where:o,Set:e.Query.Set})},this.OnError)};try{if(s.OnSuccess=r,s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e;var i=s,u=function(){i.Transaction=t.DbConnection.transaction([e.In],"readwrite"),i.ObjectStore=i.Transaction.objectStore(e.In),i.Transaction.oncomplete=function(e){i.onTransactionCompleted()},i.Transaction.ontimeout=i.onTransactionTimeout};e.Where?e.Where.Or?s.executeOrLogic():(u(),s.goToWhereLogic()):(u(),s.executeWhereUndefinedLogic())}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){if(t){var r=this.getTable(n),o=this;if(r){var s=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)};r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){!function(t){if(n.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:n.Name}),n.DataType){var r=typeof t;if(r!=n.DataType)if("object"!=r)s(e.ErrorType.BadDataType,{ColumnName:n.Name});else{var o=["+","-","*","/"];for(var i in t){o.indexOf(i)<0&&s(e.ErrorType.BadDataType,{ColumnName:n.Name});break}}}}(t[n.Name])}return!0})}else{var i=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n});e.throwError(i)}}else this.ErrorOccured=!0,this.OnSuccess(0)},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e,t=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){(e=n.target.result)&&(e.delete(),++t.RowAffected,e.continue())},n.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.filterOnOccurence=function(t){var n=!1,r=t[this.Column].toLowerCase();switch(this.CompSymbol){case e.Occurence.Any:r.indexOf(this.CompValue)>=0&&(n=!0);break;case e.Occurence.First:0==r.indexOf(this.CompValue)&&(n=!0);break;default:r.lastIndexOf(this.CompValue)==r.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.value)&&o.checkForWhereConditionMatch(r.value)&&(r.delete(),++o.RowAffected),r.continue())}:this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.value)&&(r.delete(),++o.RowAffected),r.continue())}},n}return __extends(n,t),n}(t.NotWhere);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,o=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),s.CheckFlag?o.onsuccess=function(e){(r=e.target.result)&&(s.checkForWhereConditionMatch(r.value)&&(r.delete(),++s.RowAffected),r.continue())}:o.onsuccess=function(e){(r=e.target.result)&&(r.delete(),++s.RowAffected,r.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var i=n.call(this)||this;i.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},i.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},i.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.OrInfo.OnSucess(this.RowAffected)}};try{var u=i;i.Query=r,i.OnSuccess=o,i.OnError=s,i.Transaction=t.DbConnection.transaction([r.From],"readwrite"),i.ObjectStore=i.Transaction.objectStore(r.From),i.Transaction.oncomplete=function(){u.onTransactionCompleted()},i.Transaction.onerror=function(e){u.onErrorOccured(e)},r.Where?(r.Where.Or&&i.executeOrLogic(),i.goToWhereLogic()):i.executeWhereUndefinedLogic()}catch(e){i.onExceptionOccured(e,{TableName:r.From})}return i}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(t){if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)switch(t.Name){case"create_db":case"open_db":this.RequestQueue.splice(0,0,t),e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode(),e.Status.ConStatus=e.ConnectionStatus.Connected;break;default:this.RequestQueue.push(t)}else this.RequestQueue.push(t),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode();e.EnableLog&&console.log("request pushed: "+t.Name)},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],n={Name:t.Name,Query:t.Query};e.EnableLog&&console.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.EnableLog&&console.log("request finished : "+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,e.Status.ConStatus==e.ConnectionStatus.NotStarted&&this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var n=this.getScriptUrl();n&&n.length>0?(e.WorkerInstance=new Worker(n),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},t.executeCodeUsingWorker({Name:"change_log_status",Query:{logging:e.EnableLog}}),setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),e.Status.ConStatus==e.ConnectionStatus.Connected&&t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function n(n){void 0===n&&(n=null);var r=t.call(this)||this;return r.openDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"open_db",Query:e,OnSuccess:t,OnError:n}),this},r.createDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:n,Query:e}),this},r.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},r.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:r,OnError:o}),this},r.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:r,OnError:o}),this},r.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:r,OnError:o}),this},r.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:r,OnError:o}),this},r.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:r,OnError:o}),this},r.clear=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},r.bulkInsert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:n;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"bulk_insert",Query:e,OnSuccess:r,OnError:o}),this},r.exportJson=function(e){var t=e.OnError,n=e.OnSuccess;e.OnSuccess=e.OnError=void 0,this.prcoessExecutionOfCode({Name:"export_json",Query:e,OnSuccess:function(t){var r=document.createElement("a");r.href=t,r.download=e.From+".json",r.click(),n&&n()},OnError:t})},e.WorkerStatus==e.WebWorkerStatus.Registered?e.WorkerInstance.terminate():e.WorkerStatus==e.WebWorkerStatus.NotStarted&&KeyStore.init(),r.createWorker(),n&&r.openDb(n),r}return __extends(n,t),n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self&&!self.alert&&(self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name: "+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)},JsStore.WorkerStatus=JsStore.WebWorkerStatus.Registered,KeyStore.init()); \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.4/JsStore-1.2.4.d.ts b/Dist/V 1.2/V 1.2.4/JsStore-1.2.4.d.ts deleted file mode 100644 index 9c5e6d4a..00000000 --- a/Dist/V 1.2/V 1.2.4/JsStore-1.2.4.d.ts +++ /dev/null @@ -1,984 +0,0 @@ -/** JsStore.js - v1.2.4 - 03/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - IndexedDbUndefined = "indexeddb_undefined", - IndexedDbBlocked = "indexeddb_blocked", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - UnableToStart = "unable_to_start", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - GroupBy: any; - Aggregate: { - Max: any; - Min: any; - Count: any; - Sum: any; - Avg: any; - }; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipDataCheck: any; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - interface IError { - Name: string; - Message: string; - } - interface IAggregate { - Max: Array; - Min: Array; - Sum: Array; - Count: Array; - Avg: Array; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus, TempResults: Array; - var throwError: (error: any) => never; - var getObjectFirstKey: (value: any) => string; -} -declare module JsStore { - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack?: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class Base { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - SendResultFlag: Boolean; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - protected getObjectSecondKey: (value: any) => string; - protected goToWhereLogic: () => void; - protected getPrimaryKey: (tableName: any) => any; - private getKeyPath; - protected sortNumberInAsc: (values: any) => any; - protected sortNumberInDesc: (values: any) => any; - protected sortAlphabetInAsc: (values: any) => any; - protected sortAlphabetInDesc: (values: any) => any; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - deleteDb: (name: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - class Insert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private checkAndModifyValues; - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - private checkAndModifyValue(value, callBack); - } - } -} -declare module JsStore { - module Business { - class BulkInsert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private bulkinsertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private changeLogStatus; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - bulkInsert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - exportJson: (query: ISelect, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - protected removeDuplicates: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class In extends NotWhere { - private executeSkipAndLimitForIn; - private executeSkipForIn; - private executeLimitForIn; - private executeSimpleForIn; - protected executeInLogic: (column: any, values: any) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class GroupByHelper extends Where { - constructor(); - private executeAggregateGroupBy; - protected processGroupBy: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Helper extends GroupByHelper { - processOrderBy: () => void; - private processAggregateQry; - constructor(); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Helper { - onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private orQuerySuccess; - private executeOrLogic; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - protected onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - openDb: (dbName: string, onSuccess?: Function, onError?: Function) => any; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - createDb: (dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function) => any; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb: (onSuccess: Function, onError?: Function) => any; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select: (query: ISelect, onSuccess?: Function, onError?: Function) => any; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count: (query: ICount, onSuccess?: Function, onError?: Function) => any; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update: (query: IUpdate, onSuccess?: Function, onError?: Function) => any; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete: (query: IDelete, onSuccess?: Function, onError?: Function) => any; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear: (tableName: string, onSuccess?: Function, onError?: Function) => any; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - bulkInsert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - /** - * export the result in json file - * - * @param {ISelect} qry - * @memberof Instance - */ - exportJson: (query: ISelect) => void; - } -} -export = JsStore; \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.4/JsStore-1.2.4.js b/Dist/V 1.2/V 1.2.4/JsStore-1.2.4.js deleted file mode 100644 index c6c94a0e..00000000 --- a/Dist/V 1.2/V 1.2.4/JsStore-1.2.4.js +++ /dev/null @@ -1,4764 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.2.4 - 03/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var KeyStore; -(function (KeyStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbUndefined - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = /** @class */ (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = /** @class */ (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = /** @class */ (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = /** @class */ (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbBlocked, - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - ErrorType["IndexedDbUndefined"] = "indexeddb_undefined"; - ErrorType["IndexedDbBlocked"] = "indexeddb_blocked"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["UnableToStart"] = "unable_to_start"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }, JsStore.TempResults = []; - JsStore.throwError = function (error) { - throw error; - }; - JsStore.getObjectFirstKey = function (value) { - for (var key in value) { - return key; - } - return null; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (errCallBack === void 0) { errCallBack = null; } - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - else { - if (errCallBack) { - var Error = { - Name: JsStore.Status.LastError, - Message: '' - }; - switch (Error.Name) { - case JsStore.ErrorType.IndexedDbBlocked: - Error.Message = "IndexedDB is blocked"; - break; - case JsStore.ErrorType.IndexedDbUndefined: - Error.Message = "IndexedDB is not supported"; - break; - } - errCallBack(Error); - } - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = /** @class */ (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = /** @class */ (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = /** @class */ (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function () { - function Base() { - this.ErrorOccured = false; - this.ErrorCount = 0; - this.RowAffected = 0; - this.SendResultFlag = true; - this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - this.getObjectSecondKey = function (value) { - var IsSecond = false; - for (var key in value) { - if (IsSecond) { - return key; - } - else { - IsSecond = true; - } - } - }; - this.goToWhereLogic = function () { - var Column = JsStore.getObjectFirstKey(this.Query.Where); - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1); - var Key = JsStore.getObjectFirstKey(Value); - switch (Key) { - case 'Like': - { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - ; - break; - case 'In': - { - // for (var i = 0; i < Value['In'].length; i++) { - // this.executeWhereLogic(Column, Value['In'][i]) - // } - this.executeInLogic(Column, Value['In']); - } - ; - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - this.executeWhereLogic(Column, Value, Key); - break; - case 'Aggregate': break; - default: this.executeWhereLogic(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1); - this.executeWhereLogic(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - }; - this.getPrimaryKey = function (tableName) { - var PrimaryKey = this.getTable(tableName).PrimaryKey; - return PrimaryKey ? PrimaryKey : this.getKeyPath(); - }; - this.getKeyPath = function (tableName) { - var Transaction = Business.DbConnection.transaction([tableName], "readonly"), ObjectStore = Transaction.objectStore(tableName); - return ObjectStore.keyPath; - }; - this.sortNumberInAsc = function (values) { - values.sort(function (a, b) { - return a - b; - }); - return values; - }; - this.sortNumberInDesc = function (values) { - values.sort(function (a, b) { - return b - a; - }); - return values; - }; - this.sortAlphabetInAsc = function (values) { - values.sort(function (a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); - return values; - }; - this.sortAlphabetInDesc = function (values) { - values.sort(function (a, b) { - return b.toLowerCase().localeCompare(a.toLowerCase()); - }); - return values; - }; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - switch (CompSymbol) { - case JsStore.Occurence.Any: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - SymbolIndex = value.lastIndexOf(CompValue.toLowerCase()); - if (SymbolIndex < value.length - CompValue.length) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (value <= CompareValue) { - Status = false; - } - ; - break; - //less than - case '<': - if (value >= CompareValue) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - if (typeof ColumnValue == 'object') { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - else { - var CompareValue = rowValue[Column]; - if (ColumnValue != CompareValue) { - Status = false; - break; - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }()); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = /** @class */ (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = /** @class */ (function () { - function DropDb(name, onSuccess, onError) { - this.deleteDb = function (name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("database is blocked, cant be deleted right now."); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - onSuccess(); - }; - }; - var That = this; - Business.DbConnection.close(); - setTimeout(function () { - That.deleteDb(name, onSuccess, onError); - }, 100); - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = /** @class */ (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.checkAndModifyValues = function (callBack) { - var That = this, checkInternal = function (value) { - if (value) { - That.checkAndModifyValue(value, function () { - if (!That.ErrorOccured) { - checkInternal(That.Query.Values[That.ValuesIndex++]); - } - else { - That.onErrorOccured(That.Error, true); - } - }); - } - else { - That.ValuesIndex = 0; - callBack(); - } - }; - checkInternal(this.Query.Values[this.ValuesIndex++]); - }; - _this.insertData = function () { - var That = this, IsReturn = this.Query.Return, insertDataintoTable = function (value) { - if (value) { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - if (IsReturn) { - AddResult.onsuccess = function (e) { - That.ValuesAffected.push(value); - }; - } - else { - AddResult.onsuccess = function (e) { - ++That.RowAffected; - }; - } - insertDataintoTable(That.Query.Values[That.ValuesIndex++]); - } - }; - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(this.Query.Values[That.ValuesIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - if (_this.Query.SkipDataCheck) { - That.insertData(); - } - else { - _this.checkAndModifyValues(function () { - That.insertData(); - }); - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - /** - * check the value based on defined schema and modify or create the value - * - * @private - * @param {any} value - * @param {string} tableName - * - * @memberof InsertLogic - */ - Insert.prototype.checkAndModifyValue = function (value, callBack) { - var That = this, TableName = this.Table.Name, Index = 0, checkAndModifyInternal = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && value[column.Name] == null) { - value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - callBack(); - } - } - else { - callBack(); - } - }; - checkAndModifyInternal(That.Table.Columns[Index++]); - }; - return Insert; - }(Business.Base)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var BulkInsert = /** @class */ (function (_super) { - __extends(BulkInsert, _super); - function BulkInsert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.bulkinsertData = function () { - var That = this; - this.Transaction = Business.DbConnection.transaction([this.Query.Into], "readwrite"); - this.ObjectStore = this.Transaction.objectStore(this.Query.Into); - this.Transaction.oncomplete = function (e) { - That.OnSuccess(); - }; - this.Query.Values.forEach(function (value) { - That.ObjectStore.add(value); - }); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - _this.bulkinsertData(); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - return BulkInsert; - }(Business.Base)); - Business.BulkInsert = BulkInsert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = /** @class */ (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = /** @class */ (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - switch (request.Name) { - case 'create_db': - case 'open_db': - this.executeLogic(request); - break; - case 'change_log_status': - this.changeLogStatus(request); - default: - switch (JsStore.Status.ConStatus) { - case JsStore.ConnectionStatus.Connected: - { - this.executeLogic(request); - } - ; - break; - case JsStore.ConnectionStatus.Closed: - { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - ; - break; - } - } - }; - this.changeLogStatus = function (request) { - if (request.Query['logging'] === true) { - JsStore.EnableLog = true; - } - else { - JsStore.EnableLog = false; - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'bulk_insert': - this.bulkInsert(request.Query, OnSuccess, OnError); - break; - case 'export_json': - this.exportJson(request.Query, OnSuccess, OnError); - break; - default: console.error('The Api:-' + request.Name + 'does not support'); - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.bulkInsert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.BulkInsert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.exportJson = function (query, onSuccess, onError) { - this.select(query, function (results) { - var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], { - type: "text/json" - })); - onSuccess(Url); - }, function (err) { - onError(err); - }); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = /** @class */ (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.Sorted = false; - _this.CheckFlag = false; - _this.removeDuplicates = function () { - var Datas = this.Results; - //free results memory - this.Results = undefined; - var Key = this.getPrimaryKey(this.Query.From); - var lookupObject = {}; - for (var i in Datas) { - lookupObject[Datas[i][Key]] = Datas[i]; - } - //free datas memory - Datas = []; - for (i in lookupObject) { - Datas.push(lookupObject[i]); - } - this.Results = Datas; - }; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeSkipAndLimitForIn = function (column, values) { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - skipOrPush(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeSkipForIn = function (column, values) { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - skipOrPush((Cursor.value)); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeLimitForIn = function (column, values) { - var Cursor, That = this; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeSimpleForIn = function (column, values) { - var Cursor, That = this; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeInLogic = function (column, values) { - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimitForIn(column, values); - } - else if (this.SkipRecord) { - this.executeSkipForIn(column, values); - } - else if (this.LimitRecord) { - this.executeLimitForIn(column, values); - } - else { - this.executeSimpleForIn(column, values); - } - }; - return _this; - } - return In; - }(Select.NotWhere)); - Select.In = In; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSkip = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLimit = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSimple = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.In)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest, Cursor, executeSkipAndLimit = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeSkip = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeLimit = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }, executeSimple = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = /** @class */ (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var GroupByHelper = /** @class */ (function (_super) { - __extends(GroupByHelper, _super); - function GroupByHelper() { - var _this = _super.call(this) || this; - _this.executeAggregateGroupBy = function () { - var GrpQry = this.Query.GroupBy, Datas = this.Results, LookUpObj = {}; - //free results memory - this.Results = undefined; - //assign aggregate and free aggregate memory - var AggregateQry = this.Query.Aggregate; - this.Query.Aggregate = undefined; - var Index, ObjKey, Value, AggrColumn; - var calculateAggregate = function () { - for (var prop in AggregateQry) { - switch (prop) { - case 'Count': - var getCount = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Count(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? 1 : 0; - return Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Count(" + AggrColumn + ")"] = getCount(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Count(" + AggrColumn + ")"] = getCount(); - } - } - break; - case 'Max': - var getMax = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Max(" + AggrColumn + ")"] : 0; - Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - //compare between old value and new value - return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn]; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Max(" + AggrColumn + ")"] = getMax(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Max(" + AggrColumn + ")"] = getMax(); - } - } - break; - case 'Min': - var getMin = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Min(" + AggrColumn + ")"] : Infinity; - Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity; - //compare between old value and new value - return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn]; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Min(" + AggrColumn + ")"] = getMin(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Min(" + AggrColumn + ")"] = getMin(); - } - } - break; - case 'Sum': - var getSum = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Sum(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - return Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Sum(" + AggrColumn + ")"] = getSum(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Sum(" + AggrColumn + ")"] = getSum(); - } - } - break; - case 'Avg': - var getAvg = function () { - Value = LookUpObj[ObjKey]; - //get old sum value - var Sum = Value ? Value["Sum(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - Datas[Index]["Sum(" + AggrColumn + ")"] = Sum; - //get old count value - Value = Value ? Value["Count(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? 1 : 0; - Datas[Index]["Count(" + AggrColumn + ")"] = Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - getAvg(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - getAvg(); - } - } - break; - } - } - }; - if (typeof GrpQry == 'string') { - for (Index in Datas) { - ObjKey = Datas[Index][GrpQry]; - calculateAggregate(); - LookUpObj[ObjKey] = Datas[Index]; - } - } - else { - for (Index in Datas) { - ObjKey = ""; - for (var column in GrpQry) { - ObjKey += Datas[Index][GrpQry[column]]; - } - calculateAggregate(); - LookUpObj[ObjKey] = Datas[Index]; - } - } - //free datas memory - Datas = []; - for (var i in LookUpObj) { - Datas.push(LookUpObj[i]); - } - //Checking for avg and if exist then fill the datas; - if (AggregateQry.Avg) { - if (typeof AggregateQry.Avg == 'string') { - for (Index in Datas) { - var Sum = Datas[Index]["Sum(" + AggregateQry.Avg + ")"], Count = Datas[Index]["Count(" + AggregateQry.Avg + ")"]; - Datas[Index]["Avg(" + AggregateQry.Avg + ")"] = Sum / Count; - if (AggregateQry.Count !== AggregateQry.Avg) { - delete Datas[Index]["Count(" + AggregateQry.Avg + ")"]; - } - if (AggregateQry.Sum !== AggregateQry.Avg) { - delete Datas[Index]["Sum(" + AggregateQry.Avg + ")"]; - } - } - } - else { - var IsCountTypeString = typeof AggregateQry.Count, IsSumTypeString = typeof AggregateQry.Count; - for (Index in Datas) { - for (var column in AggregateQry.Avg) { - var AvgColumn = AggregateQry.Avg[column], Sum = Datas[Index]["Sum(" + AvgColumn + ")"], Count = Datas[Index]["Count(" + AvgColumn + ")"]; - Datas[Index]["Avg(" + AvgColumn + ")"] = Sum / Count; - if (IsCountTypeString) { - if (AggregateQry.Count !== AvgColumn) { - delete Datas[Index]["Count(" + AvgColumn + ")"]; - } - else if (AggregateQry.Count.indexOf(AvgColumn) == -1) { - delete Datas[Index]["Count(" + AvgColumn + ")"]; - } - } - if (IsSumTypeString) { - if (AggregateQry.Sum !== AvgColumn) { - delete Datas[Index]["Sum(" + AvgColumn + ")"]; - } - else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) { - delete Datas[Index]["Sum(" + AvgColumn + ")"]; - } - } - } - } - } - } - this.Results = Datas; - }; - _this.processGroupBy = function () { - var GrpQry = this.Query.GroupBy, Datas = this.Results, LookUpObj = {}; - //free results memory - this.Results = this.Query.GroupBy = undefined; - if (typeof GrpQry == 'string') { - for (var i in Datas) { - LookUpObj[Datas[i][GrpQry]] = Datas[i]; - } - } - else { - var ObjKey; - for (var i in Datas) { - ObjKey = ""; - for (var column in GrpQry) { - ObjKey += Datas[i][GrpQry[column]]; - } - LookUpObj[ObjKey] = Datas[i]; - } - } - //free datas memory - Datas = []; - for (i in LookUpObj) { - Datas.push(LookUpObj[i]); - } - this.Results = Datas; - }; - return _this; - } - return GroupByHelper; - }(Select.Where)); - Select.GroupByHelper = GroupByHelper; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Helper = /** @class */ (function (_super) { - __extends(Helper, _super); - function Helper() { - var _this = _super.call(this) || this; - _this.processOrderBy = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - } - }; - _this.processAggregateQry = function () { - var Datas = this.Results, Results = {}, Key; - //free results memory - this.Results = undefined; - for (var prop in this.Query.Aggregate) { - switch (prop) { - case 'Count': - var getCount = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key] ? 1 : 0; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Count(" + Key + ")"] = getCount(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Count(" + Key + ")"] = getCount(); - } - } - break; - case 'Max': - var getMax = function () { - var Result = 0; - for (var i in Datas) { - Result = Result > Datas[i][Key] ? Result : Datas[i][Key]; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Max(" + Key + ")"] = getMax(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Max(" + Key + ")"] = getMax(); - } - } - break; - case 'Min': - var getMin = function () { - var Result = Infinity, Value = Infinity; - for (var i in Datas) { - Value = Datas[i][Key] ? Datas[i][Key] : Infinity; - Result = Result < Value ? Result : Value; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Min(" + Key + ")"] = getMin(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Min(" + Key + ")"] = getMin(); - } - } - break; - case 'Sum': - var getSum = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key]; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Sum(" + Key + ")"] = getSum(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Sum(" + Key + ")"] = getSum(); - } - } - break; - case 'Avg': - var getAvg = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key]; - } - ; - return Result / Datas.length; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Avg(" + Key + ")"] = getAvg(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Avg(" + Key + ")"] = getAvg(); - } - } - break; - } - } - //add results to the first index of result - for (var prop in Results) { - Datas[0][prop] = Results[prop]; - } - this.Results = Datas; - }; - return _this; - } - return Helper; - }(Select.GroupByHelper)); - Select.Helper = Helper; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.processOrderBy(); - if (this.Query.GroupBy) { - if (this.Query.Aggregate) { - this.executeAggregateGroupBy(); - } - else { - this.processGroupBy(); - } - } - else if (this.Query.Aggregate) { - this.processAggregateQry(); - } - this.OnSuccess(this.Results); - } - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.orQuerySuccess = function () { - this.Results = this.OrInfo.Results; - //free var memory - this.OrInfo.Results = undefined; - this.removeDuplicates(); - this.OrInfo.OnSucess(this.Results); - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess, - Results: [] - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - this.OrInfo.Results = this.OrInfo.Results.concat(this.Results); - if (!this.Query.Limit || (this.Query.Limit > this.OrInfo.Results.length)) { - this.Results = []; - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.orQuerySuccess(); - } - } - else { - this.orQuerySuccess(); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Helper)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = /** @class */ (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column). - openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - if (this.ObjectStore.count) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).count(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - That.ResultCount += e.target.result; - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Count.NotWhere)); - Count.In = In; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Count.In)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (That.CheckFlag) { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - That.ObjectStore = That.Transaction.objectStore(query.From); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where != undefined) { - if (query.Where.Or) { - new Business.Select.Instance(query, function (results) { - That.ResultCount = results.length; - That.onTransactionCompleted(); - }, _this.OnError); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = /** @class */ (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Update.NotWhere)); - Update.In = In; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Update.In)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.In); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - var That = this; - new Business.Select.Instance({ - From: this.Query.In, - Where: this.Query.Where - }, function (results) { - var Key = That.getPrimaryKey(That.Query.In), InQuery = [], WhereQry = {}; - results.forEach(function (value) { - InQuery.push(value[Key]); - }); - WhereQry[Key] = { In: InQuery }; - That.createtransactionForOrLogic({ - In: That.Query.In, - Where: WhereQry, - Set: That.Query.Set - }); - }, this.OnError); - }; - try { - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - var That = _this; - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(query.In); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - if (suppliedValue) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - } - else { - this.ErrorOccured = true; - //execute onSuccess with supplying 0 as rows affected - this.OnSuccess(0); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = /** @class */ (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Delete.NotWhere)); - Delete.In = In; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this, Cursor; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Delete.In)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.OrInfo.OnSucess(this.RowAffected); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = /** @class */ (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - switch (request.Name) { - case 'create_db': - case 'open_db': - this.RequestQueue.splice(0, 0, request); - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - ; - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - break; - default: this.RequestQueue.push(request); - } - } - else { - this.RequestQueue.push(request); - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - } - if (JsStore.EnableLog) { - console.log("request pushed: " + request.Name); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - if (JsStore.EnableLog) { - console.log("request executing : " + FirstRequest.Name); - } - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - this.executeCode(); - } - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - That.executeCodeUsingWorker({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - That.executeCode(); - } - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.openDb = function (dbName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName, - OnSuccess: onSuccess, - OnError: onError, - }); - return this; - }; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - _this.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - _this.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.bulkInsert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'bulk_insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * export the result in json file - * - * @param {ISelect} qry - * @memberof Instance - */ - _this.exportJson = function (query) { - var OnSuccess = function (url) { - var Link = document.createElement("a"); - Link.href = url; - Link.download = query.From + ".json"; - Link.click(); - if (OnSuccessCallBack) { - OnSuccessCallBack(); - } - }, OnError = query['OnError'], OnSuccessCallBack = query['OnSuccess']; - query['OnSuccess'] = query['OnError'] = undefined; - this.prcoessExecutionOfCode({ - Name: 'export_json', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - }; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - JsStore.WorkerInstance.terminate(); - } - else if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - KeyStore.init(); - } - _this.createWorker(); - if (dbName) { - _this.openDb(dbName); - } - return _this; - } - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -if (self && !self.alert) { - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name: " + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - KeyStore.init(); -} -//# sourceMappingURL=JsStore-1.2.4.js.map \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.4/JsStore-1.2.4.js.map b/Dist/V 1.2/V 1.2.4/JsStore-1.2.4.js.map deleted file mode 100644 index 688a34dd..00000000 --- a/Dist/V 1.2/V 1.2.4/JsStore-1.2.4.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.2.4.js","sourceRoot":"","sources":["../License.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../JsStore/enums.ts","../JsStore/interfaces.ts","../JsStore/CommonLogic.ts","../JsStore/UtilsLogic.ts","../JsStore/HelperLogic.ts","../JsStore/Model/Column.ts","../JsStore/Model/Table.ts","../JsStore/Model/DataBase.ts","../JsStore/Business/BaseLogic.ts","../JsStore/Business/CreateDbLogic.ts","../JsStore/Business/DropDbLogic.ts","../JsStore/Business/InsertLogic.ts","../JsStore/Business/BulkInsertLogic.ts","../JsStore/Business/OpenDbLogic.ts","../JsStore/Business/ClearLogic.ts","../JsStore/Business/MainLogic.ts","../JsStore/Business/Select/BaseSelectLogic.ts","../JsStore/Business/Select/NotWhereLogic.ts","../JsStore/Business/Select/InLogic.ts","../JsStore/Business/Select/LikeLogic.ts","../JsStore/Business/Select/WhereLogic.ts","../JsStore/Business/Select/JoinLogic.ts","../JsStore/Business/Select/GroupByHelperLogic.ts","../JsStore/Business/Select/HelperLogic.ts","../JsStore/Business/Select/InstanceLogic.ts","../JsStore/Business/Count/BaseCountLogic.ts","../JsStore/Business/Count/NotWhereLogic.ts","../JsStore/Business/Count/InLogic.ts","../JsStore/Business/Count/LikeLogic.ts","../JsStore/Business/Count/WhereLogic.ts","../JsStore/Business/Count/InstanceLogic.ts","../JsStore/Business/Update/BaseUpdateLogic.ts","../JsStore/Business/Update/NotWhereLogic.ts","../JsStore/Business/Update/InLogic.ts","../JsStore/Business/Update/LikeLogic.ts","../JsStore/Business/Update/WhereLogic.ts","../JsStore/Business/Update/InstanceLogic.ts","../JsStore/Business/Delete/BaseDeleteLogic.ts","../JsStore/Business/Delete/NotWhereLogic.ts","../JsStore/Business/Delete/InLogic.ts","../JsStore/Business/Delete/LikeLogic.ts","../JsStore/Business/Delete/WhereLogic.ts","../JsStore/Business/Delete/InstanceLogic.ts","../JsStore/CodeExecutionHelper.ts","../JsStore/JsStoreInstance.ts","../JsStore/DirectCode.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.2.4 - 03/11/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder,\r\n GroupBy: any,\r\n Aggregate: {\r\n Max: any,\r\n Min: any,\r\n Count: any,\r\n Sum: any,\r\n Avg: any\r\n }\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipDataCheck\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n\r\n export interface IAggregate {\r\n Max: Array,\r\n Min: Array,\r\n Sum: Array,\r\n Count: Array,\r\n Avg: Array\r\n }\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n}","module JsStore {\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function = null) {\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n else {\r\n if (errCallBack) {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In': {\r\n // for (var i = 0; i < Value['In'].length; i++) {\r\n // this.executeWhereLogic(Column, Value['In'][i])\r\n // }\r\n this.executeInLogic(Column, Value['In']);\r\n }; break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n case 'Aggregate': break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n\r\n protected sortNumberInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a - b;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortNumberInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b - a;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b.toLowerCase().localeCompare(a.toLowerCase());\r\n });\r\n return values;\r\n };\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n DbConnection.close();\r\n setTimeout(function () {\r\n That.deleteDb(name, onSuccess, onError);\r\n }, 100);\r\n }\r\n\r\n deleteDb = function (name: string, onSuccess: Function, onError: Function) {\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"database is blocked, cant be deleted right now.\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n onSuccess();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private checkAndModifyValues = function (callBack) {\r\n var That = this,\r\n checkInternal = function (value) {\r\n if (value) {\r\n That.checkAndModifyValue(value, function () {\r\n if (!That.ErrorOccured) {\r\n checkInternal(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n });\r\n }\r\n else {\r\n That.ValuesIndex = 0;\r\n callBack();\r\n }\r\n };\r\n checkInternal(this.Query.Values[this.ValuesIndex++]);\r\n }\r\n\r\n private insertData = function () {\r\n var That = this,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n if (IsReturn) {\r\n AddResult.onsuccess = function (e) {\r\n That.ValuesAffected.push(value);\r\n }\r\n }\r\n else {\r\n AddResult.onsuccess = function (e) {\r\n ++That.RowAffected;\r\n }\r\n }\r\n insertDataintoTable(That.Query.Values[That.ValuesIndex++]);\r\n }\r\n }\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(this.Query.Values[That.ValuesIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n if (this.Query.SkipDataCheck) {\r\n That.insertData();\r\n }\r\n else {\r\n this.checkAndModifyValues(function () {\r\n That.insertData();\r\n });\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n\r\n /**\r\n * check the value based on defined schema and modify or create the value\r\n * \r\n * @private\r\n * @param {any} value \r\n * @param {string} tableName \r\n * \r\n * @memberof InsertLogic\r\n */\r\n private checkAndModifyValue(value, callBack: Function) {\r\n var That = this,\r\n TableName = this.Table.Name,\r\n Index = 0,\r\n checkAndModifyInternal = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && value[column.Name] == null) { //check Default Schema\r\n value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n else {\r\n callBack();\r\n }\r\n }\r\n checkAndModifyInternal(That.Table.Columns[Index++]);\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BulkInsert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private bulkinsertData = function () {\r\n var That = this;\r\n this.Transaction = DbConnection.transaction([this.Query.Into], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(this.Query.Into);\r\n this.Transaction.oncomplete = function (e) {\r\n That.OnSuccess();\r\n }\r\n this.Query.Values.forEach(function (value) {\r\n That.ObjectStore.add(value);\r\n });\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.bulkinsertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.executeLogic(request);\r\n break;\r\n case 'change_log_status':\r\n this.changeLogStatus(request);\r\n default:\r\n switch (Status.ConStatus) {\r\n case ConnectionStatus.Connected: {\r\n this.executeLogic(request);\r\n }; break;\r\n case ConnectionStatus.Closed: {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }; break;\r\n }\r\n }\r\n }\r\n\r\n private changeLogStatus = function (request) {\r\n if (request.Query['logging'] === true) {\r\n EnableLog = true;\r\n }\r\n else {\r\n EnableLog = false;\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'bulk_insert': this.bulkInsert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'export_json': this.exportJson(request.Query, OnSuccess, OnError);\r\n break;\r\n default: console.error('The Api:-' + request.Name + 'does not support');\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public bulkInsert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new BulkInsert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n\r\n public exportJson = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n this.select(query, function (results) {\r\n var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], {\r\n type: \"text/json\"\r\n }));\r\n onSuccess(Url);\r\n }, function (err) {\r\n onError(err);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class In extends NotWhere {\r\n\r\n private executeSkipAndLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n skipOrPush(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkipForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n skipOrPush((Cursor.value));\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeSimpleForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n protected executeInLogic = function (column, values) {\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimitForIn(column, values);\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkipForIn(column, values);\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimitForIn(column, values);\r\n }\r\n else {\r\n this.executeSimpleForIn(column, values);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class GroupByHelper extends Where {\r\n constructor() {\r\n super();\r\n }\r\n\r\n private executeAggregateGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = undefined;\r\n //assign aggregate and free aggregate memory\r\n var AggregateQry = this.Query.Aggregate;\r\n this.Query.Aggregate = undefined;\r\n var Index, ObjKey, Value, AggrColumn;\r\n var calculateAggregate = function () {\r\n for (var prop in AggregateQry) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Max(\" + AggrColumn + \")\"] : 0;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n //compare between old value and new value\r\n return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Min(\" + AggrColumn + \")\"] : Infinity;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity;\r\n //compare between old value and new value\r\n return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old sum value\r\n var Sum = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = Sum;\r\n //get old count value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = Value;\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n getAvg();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (typeof GrpQry == 'string') {\r\n for (Index in Datas) {\r\n ObjKey = Datas[Index][GrpQry];\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n }\r\n else {\r\n for (Index in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[Index][GrpQry[column]];\r\n }\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (var i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n //Checking for avg and if exist then fill the datas;\r\n if (AggregateQry.Avg) {\r\n if (typeof AggregateQry.Avg == 'string') {\r\n for (Index in Datas) {\r\n var Sum = Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"],\r\n Count = Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n Datas[Index][\"Avg(\" + AggregateQry.Avg + \")\"] = Sum / Count;\r\n if (AggregateQry.Count !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n }\r\n if (AggregateQry.Sum !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"];\r\n }\r\n }\r\n }\r\n else {\r\n var IsCountTypeString = typeof AggregateQry.Count,\r\n IsSumTypeString = typeof AggregateQry.Count;\r\n for (Index in Datas) {\r\n for (var column in AggregateQry.Avg) {\r\n var AvgColumn = AggregateQry.Avg[column],\r\n Sum = Datas[Index][\"Sum(\" + AvgColumn + \")\"],\r\n Count = Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n Datas[Index][\"Avg(\" + AvgColumn + \")\"] = Sum / Count;\r\n\r\n if (IsCountTypeString) {\r\n if (AggregateQry.Count !== AvgColumn) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Count.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n\r\n if (IsSumTypeString) {\r\n if (AggregateQry.Sum !== AvgColumn) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.Results = Datas;\r\n };\r\n\r\n protected processGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = this.Query.GroupBy = undefined;\r\n if (typeof GrpQry == 'string') {\r\n for (var i in Datas) {\r\n LookUpObj[Datas[i][GrpQry]] = Datas[i];\r\n }\r\n }\r\n else {\r\n var ObjKey;\r\n for (var i in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[i][GrpQry[column]];\r\n }\r\n LookUpObj[ObjKey] = Datas[i];\r\n }\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Helper extends GroupByHelper {\r\n processOrderBy = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private processAggregateQry = function () {\r\n var Datas = this.Results,\r\n Results = {},\r\n Key;\r\n //free results memory\r\n this.Results = undefined;\r\n for (var prop in this.Query.Aggregate) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key] ? 1 : 0;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result = Result > Datas[i][Key] ? Result : Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n var Result = Infinity, Value = Infinity;\r\n for (var i in Datas) {\r\n Value = Datas[i][Key] ? Datas[i][Key] : Infinity;\r\n Result = Result < Value ? Result : Value;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result / Datas.length;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n //add results to the first index of result\r\n for (var prop in Results) {\r\n Datas[0][prop] = Results[prop];\r\n }\r\n this.Results = Datas;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Helper {\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.processOrderBy();\r\n if (this.Query.GroupBy) {\r\n if (this.Query.Aggregate) {\r\n this.executeAggregateGroupBy();\r\n }\r\n else {\r\n this.processGroupBy();\r\n }\r\n }\r\n else if (this.Query.Aggregate) {\r\n this.processAggregateQry();\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).\r\n openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).count(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n That.ResultCount += (e).target.result;\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (That.CheckFlag) {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n protected onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this,\r\n Cursor: IDBCursorWithValue;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.RequestQueue.splice(0, 0, request);\r\n if (WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n };\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n break;\r\n default: this.RequestQueue.push(request);\r\n }\r\n }\r\n else {\r\n this.RequestQueue.push(request);\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n if (EnableLog) {\r\n console.log(\"request pushed: \" + request.Name);\r\n }\r\n\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + FirstRequest.Name)\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n protected createWorker = function () {\r\n var That: CodeExecutionHelper = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n That.executeCodeUsingWorker({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n That.executeCode();\r\n }\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n WorkerInstance.terminate();\r\n }\r\n else if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n KeyStore.init();\r\n }\r\n this.createWorker();\r\n if (dbName) {\r\n this.openDb(dbName);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * open database\r\n * \r\n * @param {string} dbName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n openDb = function (dbName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName,\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {Model.IDataBase} dataBase \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n createDb = function (dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb = function (onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select = function (query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count = function (query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update = function (query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete = function (query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear = function (tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * insert bulk amount of data\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n bulkInsert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'bulk_insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * export the result in json file\r\n * \r\n * @param {ISelect} qry \r\n * @memberof Instance\r\n */\r\n exportJson = function (query: ISelect) {\r\n var OnSuccess = function (url) {\r\n var Link = document.createElement(\"a\");\r\n Link.href = url;\r\n Link.download = query.From + \".json\";\r\n Link.click();\r\n if (OnSuccessCallBack) {\r\n OnSuccessCallBack();\r\n }\r\n },\r\n OnError = query['OnError'],\r\n OnSuccessCallBack = query['OnSuccess'];\r\n query['OnSuccess'] = query['OnError'] = undefined;\r\n this.prcoessExecutionOfCode({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n\r\n }\r\n }\r\n}\r\n","if (self && !self.alert) {\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name: \" + e.data.Name);\r\n }\r\n var Request = e.data,\r\n IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered;\r\n KeyStore.init();\r\n}\r\n\r\n"]} \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.4/JsStore-1.2.4.min.js b/Dist/V 1.2/V 1.2.4/JsStore-1.2.4.min.js deleted file mode 100644 index c12d69b6..00000000 --- a/Dist/V 1.2/V 1.2.4/JsStore-1.2.4.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.2.4 - 03/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var r=this;new e.Business.Main(function(e){r.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var r=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?r.OnError?r.OnError(t.ErrorDetails):console.log(t.ErrorDetails):r.OnSuccess&&(null!=t.ReturnedValue?r.OnSuccess(t.ReturnedValue):r.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,r){var n=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(r));n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},n.onsuccess=function(t){var r=t.target.result;r&&(e.Results=r.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([r.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(r.From),s.Transaction.oncomplete=function(e){null!=n&&n(u.Results)},s.get(),s}return __extends(r,t),r}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.setData=function(e){var t=this,r=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var n=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));n.onsuccess=function(t){var n=t.target.result;n?(n.value.Value=e.Value,n.update(n.value)):r()},n.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([r.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(r.TableName),s.Transaction.oncomplete=function(e){null!=n&&n()},s.setData(r.Set)}catch(e){console.error(e)}return s}return __extends(r,t),r}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,r){var n=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(r));n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},n.onsuccess=function(t){var r=t.target.result;r&&(r.delete(),++e.RowAffected,r.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([r.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(r.From),s.Transaction.oncomplete=function(){null!=n&&n(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(r,t),r}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var r=function(){return function(r,n,o,s){var u=self.indexedDB.open(r,1);u.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},u.onsuccess=function(r){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(r){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(n,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=r}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var r=function(){return function(r){void 0===r&&(r=null),this.checkConnectionAndExecuteLogic=function(r){if("create_db"==r.Name||"open_db"==r.Name)this.executeLogic(r);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(r);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)n=this,setTimeout(function(){n.checkConnectionAndExecuteLogic(r)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var n=this;this.createDb(e.TableName,function(){n.checkConnectionAndExecuteLogic(r)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,r=function(e){t.returnResult({ReturnedValue:e})},n=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,r,n);break;case"set":this.set(e.Query,r,n);break;case"remove":this.remove(e.Query,r,n);break;case"create_db":this.createDb(e.Query,r,n)}},this.set=function(e,r,n){new t.Set(e,r,n)},this.remove=function(e,r,n){new t.Remove(e,r,n)},this.get=function(e,r,n){new t.Get(e,r,n)},this.createDb=function(e,r,n){new t.InitDb("KeyStore",e,r,n)},this.OnSuccess=r}}();t.Main=r}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,r,n){void 0===n&&(n=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:r,OnError:n}),this},e.set=function(t,r,n,o){void 0===n&&(n=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:r}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:n,OnError:o}),this},e.remove=function(t,r,n){void 0===r&&(r=null),void 0===n&&(n=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:r,OnError:n}),this}}(KeyStore||(KeyStore={}));var JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.TempResults=[],e.throwError=function(e){throw e},e.getObjectFirstKey=function(e){for(var t in e)return t;return null}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,r){var n={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:n.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:n.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:n.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:n.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:n.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:n.Message="No value supplied";break;case e.ErrorType.InvalidOp:n.Message="Invalid Op Value '"+r.Op+"'";break;case e.ErrorType.ColumnNotExist:n.Message="Column '"+r.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:n.Message="Null value is not allowed for column '"+r.ColumnName+"'";break;case e.ErrorType.BadDataType:n.Message="Supplied value for column '"+r.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:n.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:n.Message="Table '"+r.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:n.Message="Database '"+r.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return n},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),r=t.length;r--;){var n=t[r];e[n.toLowerCase()]=e[n],delete e[n]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,r,n){if(void 0===n&&(n=null),e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){"string"==typeof t?e.getDbVersion(t,function(e){r(Boolean(e))}):e.getDbVersion(t.DbName,function(e){r(t.Table.Version<=e)})}else if(n){var o={Name:e.Status.LastError,Message:""};switch(o.Name){case e.ErrorType.IndexedDbBlocked:o.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:o.Message="IndexedDB is not supported"}n(o)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})},e.disableLog=function(){e.EnableLog=!1,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(t,r){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+r),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=r}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){function r(e,r){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var n=this;e.Columns.forEach(function(r){n.Columns.push(new t.Column(r,e.Name))}),this.setRequireDelete(r),this.setDbVersion(r),this.setPrimaryKey(r)}return r.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},r.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:er.Version?e.DbVersion:r.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+r.Name+"_Version",e.DbVersion),r.Version=e.DbVersion},r}();t.Table=r}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var r=this;this.Name=t.Name,t.Tables.forEach(function(t){r.Tables.push(new e.Table(t,r.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){function r(){this.ErrorOccured=!1,this.ErrorCount=0,this.RowAffected=0,this.SendResultFlag=!0,this.onErrorOccured=function(t,r){if(void 0===r&&(r=!1),1==++this.ErrorCount&&null!=this.OnError){if(r)this.OnError(t);else{var n={Name:t.target.error.name,Message:t.target.error.message};this.OnError(n)}e.EnableLog&&console.error(n)}},this.onTransactionTimeout=function(e){console.log("transaction timed out")},this.onExceptionOccured=function(t,r){switch(t.name){case"NotFoundError":var n=e.Utils.getError(e.ErrorType.TableNotExist,r);e.throwError(n);default:console.error(t)}},this.getTable=function(e){var r;return t.ActiveDataBase.Tables.every(function(t){return t.Name!=e||(r=t,!1)}),r},this.getKeyRange=function(e,t){var r;switch(t){case"-":r=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":r=IDBKeyRange.lowerBound(e,!0);break;case">=":r=IDBKeyRange.lowerBound(e);break;case"<":r=IDBKeyRange.upperBound(e,!0);break;case"<=":r=IDBKeyRange.upperBound(e);break;default:r=IDBKeyRange.only(e)}return r},this.getObjectSecondKey=function(e){var t=!1;for(var r in e){if(t)return r;t=!0}},this.goToWhereLogic=function(){var t=e.getObjectFirstKey(this.Query.Where);if(this.ObjectStore.indexNames.contains(t)){var r=this.Query.Where[t];if("object"==typeof r){this.CheckFlag=Boolean(Object.keys(r).length>1||Object.keys(this.Query.Where).length>1);var n=e.getObjectFirstKey(r);switch(n){case"Like":var o=r.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":this.executeInLogic(t,r.In);break;case"-":case">":case"<":case">=":case"<=":this.executeWhereLogic(t,r,n);break;case"Aggregate":break;default:this.executeWhereLogic(t,r)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,r)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)},this.getPrimaryKey=function(e){var t=this.getTable(e).PrimaryKey;return t||this.getKeyPath()},this.getKeyPath=function(e){return t.DbConnection.transaction([e],"readonly").objectStore(e).keyPath},this.sortNumberInAsc=function(e){return e.sort(function(e,t){return e-t}),e},this.sortNumberInDesc=function(e){return e.sort(function(e,t){return t-e}),e},this.sortAlphabetInAsc=function(e){return e.sort(function(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}),e},this.sortAlphabetInDesc=function(e){return e.sort(function(e,t){return t.toLowerCase().localeCompare(e.toLowerCase())}),e}}return r.prototype.checkForWhereConditionMatch=function(t){var r=this.Query.Where,n=!0;for(var o in r){var s=r[o];if(!n)break;if("object"==typeof s)for(var u in s){if(!n)break;switch(u){case"In":!function(e,t){for(var o=r[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(i=o.indexOf(u.toLowerCase()))<0&&(n=!1);break;case e.Occurence.First:((i=o.indexOf(u.toLowerCase()))>0||i<0)&&(n=!1);break;default:(i=o.lastIndexOf(u.toLowerCase()))":case"<":case">=":case"<=":!function(e,t,o){var s=r[e][o];switch(o){case">":t<=s&&(n=!1);break;case"<":t>=s&&(n=!1);break;case"<=":t>s&&(n=!1);break;case">=":ts.High)&&(n=!1)}}(o,t[o],u)}}else if(s!=t[o]){n=!1;break}}return n},r}();t.Base=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){var s=[],u=indexedDB.open(t.ActiveDataBase.Name,r);u.onerror=function(e){null!=o&&o(e.target.error)},u.onsuccess=function(r){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=n&&n(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},u.onupgradeneeded=function(e){var r=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(r.objectStoreNames.contains(e.Name)&&r.deleteObjectStore(e.Name),i(r,e)):e.RequireCreation&&i(r,e)})};var i=function(e,r){try{if(r.PrimaryKey.length>0)n=e.createObjectStore(r.Name,{keyPath:r.PrimaryKey}),r.Columns.forEach(function(e){e.PrimaryKey?n.createIndex(e.Name,e.Name,{unique:!0}):n.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_"+e.Name+"_Value",0)});else{var n=e.createObjectStore(r.Name,{autoIncrement:!0});r.Columns.forEach(function(e){n.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_"+e.Name+"_Value",0)})}s.push(r.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_Version",r.Version)}catch(e){console.error(e)}}}}();t.CreateDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){this.deleteDb=function(r,n,o){var s=indexedDB.deleteDatabase(r);s.onblocked=function(){null!=o&&o("database is blocked, cant be deleted right now.")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(r){r.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+r.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),n()}};var s=this;t.DbConnection.close(),setTimeout(function(){s.deleteDb(r,n,o)},100)}}();t.DropDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(n,o,s){var u=r.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.checkAndModifyValues=function(e){var t=this,r=function(n){n?t.checkAndModifyValue(n,function(){t.ErrorOccured?t.onErrorOccured(t.Error,!0):r(t.Query.Values[t.ValuesIndex++])}):(t.ValuesIndex=0,e())};r(this.Query.Values[this.ValuesIndex++])},u.insertData=function(){var e=this,r=this.Query.Return,n=function(t){if(t){var o=e.ObjectStore.add(t);o.onerror=function(t){e.onErrorOccured(t)},o.onsuccess=r?function(r){e.ValuesAffected.push(t)}:function(t){++e.RowAffected},n(e.Query.Values[e.ValuesIndex++])}};e.Transaction=t.DbConnection.transaction([e.Query.Into],"readwrite"),e.ObjectStore=e.Transaction.objectStore(e.Query.Into),e.Transaction.oncomplete=function(t){e.onTransactionCompleted()},n(this.Query.Values[e.ValuesIndex++])};try{u.Query=n,u.OnSuccess=o,u.OnError=s;var i=u;if(u.Table=u.getTable(n.Into),u.Table)u.Query.SkipDataCheck?i.insertData():u.checkAndModifyValues(function(){i.insertData()});else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:n.Into})}return u}return __extends(n,r),n.prototype.checkAndModifyValue=function(r,n){var o=this,s=this.Table.Name,u=0,i=function(c){if(c){var a=function(t,r){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,r)},l=function(){c.NotNull&&e.isNull(r[c.Name])?a(e.ErrorType.NullValue,{ColumnName:c.Name}):c.DataType&&typeof r[c.Name]!=c.DataType&&a(e.ErrorType.BadDataType,{ColumnName:c.Name}),i(o.Table.Columns[u++])};o.ErrorOccured?n():c.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",function(e){r[c.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+s+"_"+c.Name+"_Value",e),l()}):c.Default&&null==r[c.Name]?(r[c.Name]=c.Default,l()):l()}else n()};i(o.Table.Columns[u++])},n}(t.Base);t.Insert=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(n,o,s){var u=r.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.bulkinsertData=function(){var e=this;this.Transaction=t.DbConnection.transaction([this.Query.Into],"readwrite"),this.ObjectStore=this.Transaction.objectStore(this.Query.Into),this.Transaction.oncomplete=function(t){e.OnSuccess()},this.Query.Values.forEach(function(t){e.ObjectStore.add(t)})};try{u.Query=n,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(n.Into),u.Table)u.bulkinsertData();else{var i=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n.Into});e.throwError(i)}}catch(e){u.onExceptionOccured(e,{TableName:n.Into})}return u}return __extends(n,r),n}(t.Base);t.BulkInsert=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,r);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(r){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=n&&n()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([r],"readwrite").objectStore(r).clear();return i.onsuccess=function(t){u.getTable(r).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+r+"_"+t.Name+"_Value")}),null!=n&&n()},i.onerror=function(e){null!=o&&o()},s}return __extends(r,t),r}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r){void 0===r&&(r=null),this.checkConnectionAndExecuteLogic=function(r){switch(e.EnableLog&&console.log("checking connection and executing request:"+r.Name),r.Name){case"create_db":case"open_db":this.executeLogic(r);break;case"change_log_status":this.changeLogStatus(r);default:switch(e.Status.ConStatus){case e.ConnectionStatus.Connected:this.executeLogic(r);break;case e.ConnectionStatus.Closed:var n=this;this.openDb(t.ActiveDataBase.Name,function(){n.checkConnectionAndExecuteLogic(r)})}}},this.changeLogStatus=function(t){!0===t.Query.logging?e.EnableLog=!0:e.EnableLog=!1},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,r=function(e){t.returnResult({ReturnedValue:e})},n=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,r,n);break;case"insert":this.insert(e.Query,r,n);break;case"update":this.update(e.Query,r,n);break;case"delete":this.delete(e.Query,r,n);break;case"open_db":this.openDb(e.Query,r,n);break;case"create_db":this.createDb(e.Query,r,n);break;case"clear":this.clear(e.Query,r,n);break;case"drop_db":this.dropDb(r,n);break;case"count":this.count(e.Query,r,n);break;case"bulk_insert":this.bulkInsert(e.Query,r,n);break;case"export_json":this.exportJson(e.Query,r,n);break;default:console.error("The Api:-"+e.Name+"does not support")}},this.openDb=function(r,n,o){KeyStore.get("JsStore_"+r+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:r});KeyStore.get("JsStore_"+r+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,n,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,r){new t.DropDb(t.ActiveDataBase.Name,e,r)},this.update=function(e,r,n){new t.Update.Instance(e,r,n)},this.insert=function(r,n,o){Array.isArray(r.Values)?new t.Insert(r,n,o):e.throwError("Value should be array :- supplied value is not array")},this.bulkInsert=function(r,n,o){Array.isArray(r.Values)?new t.BulkInsert(r,n,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,r,n){new t.Delete.Instance(e,r,n)},this.select=function(e,r,n){"object"==typeof e.From?new t.Select.Join(e,r,n):new t.Select.Instance(e,r,n)},this.count=function(e,r,n){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,r,n)):new t.Count.Instance(e,r,n)},this.createDb=function(r,n,o){KeyStore.get("JsStore_"+r.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(r);var u=function(){setTimeout(function(){var r=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_Version",function(s){s==r.Version?new t.CreateDb(e.DbVersion,n,o):u()})},200)};u()})},this.clear=function(e,r,n){new t.Clear(e,r,n)},this.exportJson=function(e,t,r){this.select(e,function(e){var r=URL.createObjectURL(new Blob([JSON.stringify(e)],{type:"text/json"}));t(r)},function(e){r(e)})},this.OnSuccess=r}}();t.Main=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.Sorted=!1,t.CheckFlag=!1,t.removeDuplicates=function(){var e=this.Results;this.Results=void 0;var t=this.getPrimaryKey(this.Query.From),r={};for(var n in e)r[e[n][t]]=e[n];e=[];for(n in r)e.push(r[n]);this.Results=e},t}return __extends(t,e),t}(e.Base);t.BaseSelect=r}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var r=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeWhereUndefinedLogic=function(){var t,r,n=this;if(this.Query.Order&&this.Query.Order.By)if(n.ObjectStore.indexNames.contains(this.Query.Order.By)){var o=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,r=this.ObjectStore.index(n.Query.Order.By).openCursor(null,o)}else{var s=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(s)}else r=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(r){(t=r.target.result)&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(t.value),t.continue()):(e=!0,t.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(r){(t=r.target.result)&&(e?(n.Results.push(t.value),t.continue()):(e=!0,t.advance(n.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){(t=e.target.result)&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:r.onsuccess=function(e){(t=e.target.result)&&(n.Results.push(t.value),t.continue())},r.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},r}return __extends(r,t),r}(t.BaseSelect);t.NotWhere=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeSkipAndLimitForIn=function(e,t){var r,n=this.SkipRecord,o=this,s=function(e){0==n?o.Results.push(e):--n};if(o.CheckFlag)for(var u=0,i=t.length;u=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},r.executeSkipAndLimit=function(){var e,t=this.SkipRecord,r=this,n=function(e){0==t?r.Results.push(e):--t};r.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,r.Results.length!=r.LimitRecord&&e&&(r.filterOnOccurence(e.value)&&r.checkForWhereConditionMatch(e.value)&&n(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,r.Results.length!=r.LimitRecord&&e&&(r.filterOnOccurence(e.value)&&n(e.value),e.continue())}},r.executeSkip=function(){var e,t=this.SkipRecord,r=this,n=function(e){0==t?r.Results.push(e):--t};r.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(r.filterOnOccurence(e.value)&&r.checkForWhereConditionMatch(e.value)&&n(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(r.filterOnOccurence(e.value)&&n(e.value),e.continue())}},r.executeLimit=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(r){e=r.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(r){e=r.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},r.executeSimple=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(r){(e=r.target.result)&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(r){(e=r.target.result)&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},r.executeLikeLogic=function(e,t,r){var n=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n,o,s=this;t=r?t[r]:t,(n=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r))).onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?function(){var e=!1;s.CheckFlag?n.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:n.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;s.CheckFlag?n.onsuccess=function(t){(o=t.target.result)&&(e?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:n.onsuccess=function(t){(o=t.target.result)&&(e?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.LimitRecord?s.CheckFlag?n.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&s.checkForWhereConditionMatch(o.value)&&(s.Results.push(o.value),o.continue())}:n.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&(s.Results.push(o.value),o.continue())}:s.CheckFlag?n.onsuccess=function(e){(o=e.target.result)&&(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue())}:n.onsuccess=function(e){(o=e.target.result)&&(s.Results.push(o.value),o.continue())}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,r){var n,o=this,s=[],u=0,i=(r.Column,o.Results),c=i.length;new e.Instance({From:r.Table,Where:r.Where,Order:r.Order},function(e){e.forEach(function(e,r){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,n){if(s[u]={},e==t[r.Column]){s[u][r.Table]=t;for(c=0;cn.CurrentQueryStackIndex+1?n.startExecutionJoinLogic():n.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;in.CurrentQueryStackIndex+1?n.startExecutionJoinLogic():n.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][r.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},r}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=e.call(this)||this;return t.executeAggregateGroupBy=function(){var e=this.Query.GroupBy,t=this.Results,r={};this.Results=void 0;var n=this.Query.Aggregate;this.Query.Aggregate=void 0;var o,s,u,i,c=function(){for(var e in n)switch(e){case"Count":var c=function(){return u=r[s],u=u?u["Count("+i+")"]:0,u+=t[o][i]?1:0};if("string"==typeof n[e])i=n[e],t[o]["Count("+i+")"]=c();else if(Array.isArray(n[e]))for(var a in n[e])i=n[e][a],t[o]["Count("+i+")"]=c();break;case"Max":var l=function(){return u=r[s],u=u?u["Max("+i+")"]:0,t[o][i]=t[o][i]?t[o][i]:0,u>t[o][i]?u:t[o][i]};if("string"==typeof n[e])i=n[e],t[o]["Max("+i+")"]=l();else if(Array.isArray(n[e]))for(var a in n[e])i=n[e][a],t[o]["Max("+i+")"]=l();break;case"Min":var h=function(){return u=r[s],u=u?u["Min("+i+")"]:1/0,t[o][i]=t[o][i]?t[o][i]:1/0,u0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,r=e.By;"string"==typeof this.Results[0][r]?"asc"==e.Type?t.Results.sort(function(e,t){return e[r].toLowerCase().localeCompare(t[r].toLowerCase())}):t.Results.sort(function(e,t){return t[r].toLowerCase().localeCompare(e[r].toLowerCase())}):"number"==typeof this.Results[0][r]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[r]-t[r]}):t.Results.sort(function(e,t){return t[r]-e[r]}))}},t.processAggregateQry=function(){var e,t=this.Results,r={};this.Results=void 0;for(var n in this.Query.Aggregate)switch(n){case"Count":var o=function(){var r=0;for(var n in t)r+=t[n][e]?1:0;return r};if("string"==typeof this.Query.Aggregate[n])r["Count("+(e=this.Query.Aggregate[n])+")"]=o();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Count("+(e=this.Query.Aggregate[n][s])+")"]=o();break;case"Max":var u=function(){var r=0;for(var n in t)r=r>t[n][e]?r:t[n][e];return r};if("string"==typeof this.Query.Aggregate[n])r["Max("+(e=this.Query.Aggregate[n])+")"]=u();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Max("+(e=this.Query.Aggregate[n][s])+")"]=u();break;case"Min":var i=function(){var r=1/0,n=1/0;for(var o in t)r=r<(n=t[o][e]?t[o][e]:1/0)?r:n;return r};if("string"==typeof this.Query.Aggregate[n])r["Min("+(e=this.Query.Aggregate[n])+")"]=i();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Min("+(e=this.Query.Aggregate[n][s])+")"]=i();break;case"Sum":var c=function(){var r=0;for(var n in t)r+=t[n][e];return r};if("string"==typeof this.Query.Aggregate[n])r["Sum("+(e=this.Query.Aggregate[n])+")"]=c();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Sum("+(e=this.Query.Aggregate[n][s])+")"]=c();break;case"Avg":var a=function(){var r=0;for(var n in t)r+=t[n][e];return r/t.length};if("string"==typeof this.Query.Aggregate[n])r["Avg("+(e=this.Query.Aggregate[n])+")"]=a();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Avg("+(e=this.Query.Aggregate[n][s])+")"]=a()}for(var n in r)t[0][n]=r[n];this.Results=t},t}return __extends(t,e),t}(e.GroupByHelper);e.Helper=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(n,o,s){var u=r.call(this)||this;u.onTransactionCompleted=function(){this.SendResultFlag&&(this.processOrderBy(),this.Query.GroupBy?this.Query.Aggregate?this.executeAggregateGroupBy():this.processGroupBy():this.Query.Aggregate&&this.processAggregateQry(),this.OnSuccess(this.Results))},u.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readonly"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.orQuerySuccess=function(){this.Results=this.OrInfo.Results,this.OrInfo.Results=void 0,this.removeDuplicates(),this.OrInfo.OnSucess(this.Results)},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess,Results:[]},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){if(this.OrInfo.Results=this.OrInfo.Results.concat(this.Results),!this.Query.Limit||this.Query.Limit>this.OrInfo.Results.length){this.Results=[];var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.orQuerySuccess()}else this.orQuerySuccess()}};var i=u;u.Query=n,u.OnSuccess=o,u.OnError=s,u.SkipRecord=u.Query.Skip,u.LimitRecord=u.Query.Limit;try{u.Transaction=t.DbConnection.transaction([n.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.Transaction.ontimeout=i.onTransactionCompleted,u.ObjectStore=u.Transaction.objectStore(n.From),n.Where?(n.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:n.From})}return u}return __extends(n,r),n}(r.Helper);r.Instance=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=r}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var r,n=this.ObjectStore.openCursor();n.onsuccess=function(t){(r=t.target.result)&&(++e.ResultCount,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var r,n,o=this;if(o.CheckFlag)for(var s=0,u=t.length;s=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},r.executeLikeLogic=function(e,t,r){var n,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&++o.ResultCount,n.continue())}:this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&++o.ResultCount,n.continue())}},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n=this;if(t=r?t[r]:t,n.CheckFlag){(u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r))).onsuccess=function(e){(s=e.target.result)&&(n.checkForWhereConditionMatch(s.value)&&++n.ResultCount,s.continue())},u.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}else if(this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,r));o.onsuccess=function(){n.ResultCount=o.result},o.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}else{var s,u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r));u.onsuccess=function(e){(s=e.target.result)&&(++n.ResultCount,s.continue())},u.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(t){function r(r,n,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=r,s.OnSuccess=n,s.OnError=o;try{var i=function(){u.Transaction=e.DbConnection.transaction([r.From],"readonly"),u.ObjectStore=u.Transaction.objectStore(r.From),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};void 0!=r.Where?r.Where.Or?new e.Select.Instance(r,function(e){u.ResultCount=e.length,u.onTransactionCompleted()},s.OnError):(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}catch(e){s.onExceptionOccured(e,{TableName:r.From})}return s}return __extends(r,t),r}(t.Where);t.Instance=r}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var r in e)if("object"!=typeof e[r])t[r]=e[r];else for(var n in e[r]){switch(n){case"+":t[r]+=e[r][n];break;case"-":t[r]-=e[r][n];break;case"*":t[r]*=e[r][n];break;case"/":t[r]/=e[r][n];break;default:t[r]=e[r]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.executeWhereUndefinedLogic=function(){var e,r=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){(e=n.target.result)&&(e.update(t.updateValue(r.Query.Set,e.value)),++r.RowAffected,e.continue())},n.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}},r}return __extends(r,e),r}(e.BaseUpdate);t.NotWhere=r}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeInLogic=function(t,r){var n,o,s=this;if(s.CheckFlag)for(var u=0,i=r.length;u=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},n.executeLikeLogic=function(e,r,n){var o,s=this;this.CompValue=r.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},s.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&s.checkForWhereConditionMatch(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}:this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}},n}return __extends(n,r),n}(t.In);t.Like=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeWhereLogic=function(t,r,n){var o,s,u=this;r=n?r[n]:r,s=this.ObjectStore.index(t).openCursor(this.getKeyRange(r,n)),u.CheckFlag?s.onsuccess=function(t){(o=t.target.result)&&(u.checkForWhereConditionMatch(o.value)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected),o.continue())}:s.onsuccess=function(t){(o=t.target.result)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected,o.continue())},s.onerror=function(e){u.ErrorOccured=!0,u.onErrorOccured(e)}},r}return __extends(r,t),r}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(e,n,o){var s=r.call(this)||this;s.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},s.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.In],"readwrite"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.In),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},s.executeOrLogic=function(){var e=this;new t.Select.Instance({From:this.Query.In,Where:this.Query.Where},function(t){var r=e.getPrimaryKey(e.Query.In),n=[],o={};t.forEach(function(e){n.push(e[r])}),o[r]={In:n},e.createtransactionForOrLogic({In:e.Query.In,Where:o,Set:e.Query.Set})},this.OnError)};try{if(s.OnSuccess=n,s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e;var u=s,i=function(){u.Transaction=t.DbConnection.transaction([e.In],"readwrite"),u.ObjectStore=u.Transaction.objectStore(e.In),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};e.Where?e.Where.Or?s.executeOrLogic():(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(n,r),n.prototype.checkSchema=function(t,r){if(t){var n=this.getTable(r),o=this;if(n){var s=function(t,r){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,r)};n.Columns.every(function(r){if(o.ErrorOccured)return!1;if(r.Name in t){!function(t){if(r.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:r.Name}),r.DataType){var n=typeof t;if(n!=r.DataType)if("object"!=n)s(e.ErrorType.BadDataType,{ColumnName:r.Name});else{var o=["+","-","*","/"];for(var u in t){o.indexOf(u)<0&&s(e.ErrorType.BadDataType,{ColumnName:r.Name});break}}}}(t[r.Name])}return!0})}else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r});e.throwError(u)}}else this.ErrorOccured=!0,this.OnSuccess(0)},n}(r.Where);r.Instance=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=r}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e,t=this,r=this.ObjectStore.openCursor();r.onsuccess=function(r){(e=r.target.result)&&(e.delete(),++t.RowAffected,e.continue())},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var r,n,o=this;if(o.CheckFlag)for(var s=0,u=t.length;s=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},r.executeLikeLogic=function(e,t,r){var n,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&(n.delete(),++o.RowAffected),n.continue())}:this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&(n.delete(),++o.RowAffected),n.continue())}},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n,o,s=this;t=r?t[r]:t,o=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r)),s.CheckFlag?o.onsuccess=function(e){(n=e.target.result)&&(s.checkForWhereConditionMatch(n.value)&&(n.delete(),++s.RowAffected),n.continue())}:o.onsuccess=function(e){(n=e.target.result)&&(n.delete(),++s.RowAffected,n.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(n,o,s){var u=r.call(this)||this;u.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},u.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readwrite"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.OrInfo.OnSucess(this.RowAffected)}};try{var i=u;u.Query=n,u.OnSuccess=o,u.OnError=s,u.Transaction=t.DbConnection.transaction([n.From],"readwrite"),u.ObjectStore=u.Transaction.objectStore(n.From),u.Transaction.oncomplete=function(){i.onTransactionCompleted()},u.Transaction.onerror=function(e){i.onErrorOccured(e)},n.Where?(n.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:n.From})}return u}return __extends(n,r),n}(r.Where);r.Instance=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(t){if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)switch(t.Name){case"create_db":case"open_db":this.RequestQueue.splice(0,0,t),e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode(),e.Status.ConStatus=e.ConnectionStatus.Connected;break;default:this.RequestQueue.push(t)}else this.RequestQueue.push(t),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode();e.EnableLog&&console.log("request pushed: "+t.Name)},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],r={Name:t.Name,Query:t.Query};e.EnableLog&&console.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(r):this.executeCodeDirect(r)}},this.executeCodeDirect=function(t){var r=this;new e.Business.Main(function(e){r.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var r=this.RequestQueue.shift();this.IsCodeExecuting=!1,r&&(e.EnableLog&&console.log("request finished : "+r.Name),t.ErrorOccured?r.OnError&&r.OnError(t.ErrorDetails):r.OnSuccess&&(null!=t.ReturnedValue?r.OnSuccess(t.ReturnedValue):r.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,e.Status.ConStatus==e.ConnectionStatus.NotStarted&&this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},t.executeCodeUsingWorker({Name:"change_log_status",Query:{logging:e.EnableLog}}),setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),e.Status.ConStatus==e.ConnectionStatus.Connected&&t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",r=e?e.toLowerCase():"jsstore",n=document.getElementsByTagName("script"),o=n.length-1,s="";o>=0;o--)if(s=n[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(r)>=0)return t=n[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function r(r){void 0===r&&(r=null);var n=t.call(this)||this;return n.openDb=function(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),this.prcoessExecutionOfCode({Name:"open_db",Query:e,OnSuccess:t,OnError:r}),this},n.createDb=function(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:r,Query:e}),this},n.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.select=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:r;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:n,OnError:o}),this},n.count=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:r;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:n,OnError:o}),this},n.insert=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:r;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:n,OnError:o}),this},n.update=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:r;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:n,OnError:o}),this},n.delete=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:r;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:n,OnError:o}),this},n.clear=function(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n.bulkInsert=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:r;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"bulk_insert",Query:e,OnSuccess:n,OnError:o}),this},n.exportJson=function(e){var t=e.OnError,r=e.OnSuccess;e.OnSuccess=e.OnError=void 0,this.prcoessExecutionOfCode({Name:"export_json",Query:e,OnSuccess:function(t){var n=document.createElement("a");n.href=t,n.download=e.From+".json",n.click(),r&&r()},OnError:t})},e.WorkerStatus==e.WebWorkerStatus.Registered?e.WorkerInstance.terminate():e.WorkerStatus==e.WebWorkerStatus.NotStarted&&KeyStore.init(),n.createWorker(),r&&n.openDb(r),n}return __extends(r,t),r}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self&&!self.alert&&(self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name: "+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)},JsStore.WorkerStatus=JsStore.WebWorkerStatus.Registered,KeyStore.init()); \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.5/JsStore-1.2.5.d.ts b/Dist/V 1.2/V 1.2.5/JsStore-1.2.5.d.ts deleted file mode 100644 index 06889587..00000000 --- a/Dist/V 1.2/V 1.2.5/JsStore-1.2.5.d.ts +++ /dev/null @@ -1,1001 +0,0 @@ -/** JsStore.js - v1.2.5 - 08/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - IndexedDbUndefined = "indexeddb_undefined", - IndexedDbBlocked = "indexeddb_blocked", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - UnableToStart = "unable_to_start", - } - enum WhereQryOption { - In = "In", - Like = "Like", - Or = "Or", - } - enum DataType { - String = "string", - Object = "object", - Array = "array", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - GroupBy: any; - Aggregate: { - Max: any; - Min: any; - Count: any; - Sum: any; - Avg: any; - }; - IgnoreCase: boolean; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - IgnoreCase: boolean; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - IgnoreCase: boolean; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - IgnoreCase: boolean; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipDataCheck: any; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - interface IError { - Name: string; - Message: string; - } - interface IAggregate { - Max: Array; - Min: Array; - Sum: Array; - Count: Array; - Avg: Array; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus, TempResults: Array; - var throwError: (error: any) => never; - var getObjectFirstKey: (value: any) => string; -} -declare module JsStore { - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack?: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class BaseHelper { - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - protected getObjectSecondKey: (value: any) => string; - protected getPrimaryKey: (tableName: any) => any; - private getKeyPath; - protected sortNumberInAsc: (values: any) => any; - protected sortNumberInDesc: (values: any) => any; - protected sortAlphabetInAsc: (values: any) => any; - protected sortAlphabetInDesc: (values: any) => any; - private getCombination(word); - protected getAllCombinationOfWord(word: any, isArray: any): any[]; - } - } -} -declare module JsStore { - module Business { - class Base extends BaseHelper { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - SendResultFlag: Boolean; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected goToWhereLogic: () => void; - protected makeQryInCaseSensitive: (qry: any) => any; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - deleteDb: (name: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - class InsertHelper extends Base { - ValuesAffected: any[]; - Query: IInsert; - onTransactionCompleted: () => void; - protected checkModifyInsertValues: (table: any, values: any) => void; - } - } -} -declare module JsStore { - module Business { - class Insert extends InsertHelper { - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class BulkInsert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private bulkinsertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private changeLogStatus; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - bulkInsert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - exportJson: (query: ISelect, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - protected removeDuplicates: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class In extends NotWhere { - private executeSkipAndLimitForIn; - private executeSkipForIn; - private executeLimitForIn; - private executeSimpleForIn; - protected executeInLogic: (column: any, values: any) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class GroupByHelper extends Where { - constructor(); - private executeAggregateGroupBy; - protected processGroupBy: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Helper extends GroupByHelper { - processOrderBy: () => void; - private processAggregateQry; - constructor(); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Helper { - onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private orQuerySuccess; - private executeOrLogic; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - protected onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - openDb: (dbName: string, onSuccess?: Function, onError?: Function) => any; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - createDb: (dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function) => any; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb: (onSuccess: Function, onError?: Function) => any; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select: (query: ISelect, onSuccess?: Function, onError?: Function) => any; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count: (query: ICount, onSuccess?: Function, onError?: Function) => any; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update: (query: IUpdate, onSuccess?: Function, onError?: Function) => any; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete: (query: IDelete, onSuccess?: Function, onError?: Function) => any; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear: (tableName: string, onSuccess?: Function, onError?: Function) => any; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - bulkInsert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - /** - * export the result in json file - * - * @param {ISelect} qry - * @memberof Instance - */ - exportJson: (query: ISelect) => void; - } -} -export = JsStore; \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.5/JsStore-1.2.5.js b/Dist/V 1.2/V 1.2.5/JsStore-1.2.5.js deleted file mode 100644 index 0f1c3f3e..00000000 --- a/Dist/V 1.2/V 1.2.5/JsStore-1.2.5.js +++ /dev/null @@ -1,4846 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.2.5 - 08/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var KeyStore; -(function (KeyStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbUndefined - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = /** @class */ (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = /** @class */ (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = /** @class */ (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = /** @class */ (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbBlocked, - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - ErrorType["IndexedDbUndefined"] = "indexeddb_undefined"; - ErrorType["IndexedDbBlocked"] = "indexeddb_blocked"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["UnableToStart"] = "unable_to_start"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); - var WhereQryOption; - (function (WhereQryOption) { - WhereQryOption["In"] = "In"; - WhereQryOption["Like"] = "Like"; - WhereQryOption["Or"] = "Or"; - })(WhereQryOption = JsStore.WhereQryOption || (JsStore.WhereQryOption = {})); - var DataType; - (function (DataType) { - DataType["String"] = "string"; - DataType["Object"] = "object"; - DataType["Array"] = "array"; - })(DataType = JsStore.DataType || (JsStore.DataType = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }, JsStore.TempResults = []; - JsStore.throwError = function (error) { - throw error; - }; - JsStore.getObjectFirstKey = function (value) { - for (var key in value) { - return key; - } - return null; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (errCallBack === void 0) { errCallBack = null; } - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - else { - if (errCallBack) { - var Error = { - Name: JsStore.Status.LastError, - Message: '' - }; - switch (Error.Name) { - case JsStore.ErrorType.IndexedDbBlocked: - Error.Message = "IndexedDB is blocked"; - break; - case JsStore.ErrorType.IndexedDbUndefined: - Error.Message = "IndexedDB is not supported"; - break; - } - errCallBack(Error); - } - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = /** @class */ (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = /** @class */ (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = /** @class */ (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var BaseHelper = /** @class */ (function () { - function BaseHelper() { - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - this.getObjectSecondKey = function (value) { - var IsSecond = false; - for (var key in value) { - if (IsSecond) { - return key; - } - else { - IsSecond = true; - } - } - }; - this.getPrimaryKey = function (tableName) { - var PrimaryKey = this.getTable(tableName).PrimaryKey; - return PrimaryKey ? PrimaryKey : this.getKeyPath(); - }; - this.getKeyPath = function (tableName) { - var Transaction = Business.DbConnection.transaction([tableName], "readonly"), ObjectStore = Transaction.objectStore(tableName); - return ObjectStore.keyPath; - }; - this.sortNumberInAsc = function (values) { - values.sort(function (a, b) { - return a - b; - }); - return values; - }; - this.sortNumberInDesc = function (values) { - values.sort(function (a, b) { - return b - a; - }); - return values; - }; - this.sortAlphabetInAsc = function (values) { - values.sort(function (a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); - return values; - }; - this.sortAlphabetInDesc = function (values) { - values.sort(function (a, b) { - return b.toLowerCase().localeCompare(a.toLowerCase()); - }); - return values; - }; - } - BaseHelper.prototype.getCombination = function (word) { - var Results = [], doAndPushCombination = function (word, chars, index) { - if (index == word.length) { - Results.push(chars.join("")); - } - else { - var ch = word.charAt(index); - chars[index] = ch.toLowerCase(); - doAndPushCombination(word, chars, index + 1); - chars[index] = ch.toUpperCase(); - doAndPushCombination(word, chars, index + 1); - } - }; - doAndPushCombination(word, [], 0); - return Results; - }; - BaseHelper.prototype.getAllCombinationOfWord = function (word, isArray) { - if (isArray) { - var Results = []; - for (var i = 0, length = word.length; i < length; i++) { - Results = Results.concat(this.getCombination(word[i])); - } - return Results; - } - else { - return this.getCombination(word); - } - }; - return BaseHelper; - }()); - Business.BaseHelper = BaseHelper; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function (_super) { - __extends(Base, _super); - function Base() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ErrorOccured = false; - _this.ErrorCount = 0; - _this.RowAffected = 0; - _this.SendResultFlag = true; - _this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - _this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - _this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - _this.goToWhereLogic = function () { - var Column = JsStore.getObjectFirstKey(this.Query.Where); - if (this.Query.IgnoreCase === true) { - this.Query.Where = this.makeQryInCaseSensitive(this.Query.Where); - } - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1); - var Key = JsStore.getObjectFirstKey(Value); - switch (Key) { - case 'Like': - { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - ; - break; - case 'In': - this.executeInLogic(Column, Value['In']); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - this.executeWhereLogic(Column, Value, Key); - break; - case 'Aggregate': break; - default: this.executeWhereLogic(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1); - this.executeWhereLogic(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - }; - _this.makeQryInCaseSensitive = function (qry) { - var Results = [], Qry; - for (var item in qry) { - Qry = qry[item]; - switch (item) { - case JsStore.WhereQryOption.In: - for (var value in Qry) { - Results = Results.concat(this.getAllCombinationOfWord(Qry['In'], true)); - } - break; - case JsStore.WhereQryOption.Like: break; - default: - Results = Results.concat(this.getAllCombinationOfWord(Qry)); - } - qry[item] = { - In: Results - }; - Results = []; - } - return qry; - }; - return _this; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - switch (CompSymbol) { - case JsStore.Occurence.Any: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - SymbolIndex = value.lastIndexOf(CompValue.toLowerCase()); - if (SymbolIndex < value.length - CompValue.length) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (value <= CompareValue) { - Status = false; - } - ; - break; - //less than - case '<': - if (value >= CompareValue) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - if (typeof ColumnValue == 'object') { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - else { - var CompareValue = rowValue[Column]; - if (ColumnValue != CompareValue) { - Status = false; - break; - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }(Business.BaseHelper)); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = /** @class */ (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = /** @class */ (function () { - function DropDb(name, onSuccess, onError) { - this.deleteDb = function (name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("database is blocked, cant be deleted right now."); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - onSuccess(); - }; - }; - var That = this; - Business.DbConnection.close(); - setTimeout(function () { - That.deleteDb(name, onSuccess, onError); - }, 100); - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var InsertHelper = /** @class */ (function (_super) { - __extends(InsertHelper, _super); - function InsertHelper() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ValuesAffected = []; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.checkModifyInsertValues = function (table, values) { - var That = this, ValueIndex = 0, Value, TableName = table.Name, checkDatas = function () { - Value = values[ValueIndex++]; - checkInternal(); - }, checkInternal = function () { - if (Value) { - checkAndModifyValue(); - } - else { - That.insertData(values); - } - }, checkAndModifyValue = function () { - var Index = 0, checkAndModifyColumn = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(Value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof Value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyColumn(table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - Value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && Value[column.Name] == null) { - Value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - That.onErrorOccured(That.Error, true); - } - } - else { - checkDatas(); - } - }; - checkAndModifyColumn(table.Columns[Index++]); - }; - checkDatas(); - }; - return _this; - } - return InsertHelper; - }(Business.Base)); - Business.InsertHelper = InsertHelper; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = /** @class */ (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.insertData = function (values) { - var That = this, ValueIndex = 0, IsReturn = this.Query.Return, insertDataintoTable; - if (IsReturn) { - insertDataintoTable = function (value) { - if (value) { - var AddResult = ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - That.ValuesAffected.push(value); - insertDataintoTable(values[ValueIndex++]); - }; - } - }; - } - else { - insertDataintoTable = function (value) { - if (value) { - var AddResult = ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - ++That.RowAffected; - insertDataintoTable(values[ValueIndex++]); - }; - } - }; - } - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - var ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(values[ValueIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var Table = _this.getTable(query.Into); - if (Table) { - if (_this.Query.SkipDataCheck) { - _this.insertData(_this.Query.Values); - //remove values - _this.Query.Values = undefined; - } - else { - _this.checkModifyInsertValues(Table, _this.Query.Values); - //remove values - _this.Query.Values = undefined; - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - return Insert; - }(Business.InsertHelper)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var BulkInsert = /** @class */ (function (_super) { - __extends(BulkInsert, _super); - function BulkInsert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.bulkinsertData = function () { - var That = this; - this.Transaction = Business.DbConnection.transaction([this.Query.Into], "readwrite"); - this.ObjectStore = this.Transaction.objectStore(this.Query.Into); - this.Transaction.oncomplete = function (e) { - That.OnSuccess(); - }; - this.Query.Values.forEach(function (value) { - That.ObjectStore.add(value); - }); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - _this.bulkinsertData(); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - return BulkInsert; - }(Business.Base)); - Business.BulkInsert = BulkInsert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = /** @class */ (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = /** @class */ (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - switch (request.Name) { - case 'create_db': - case 'open_db': - this.executeLogic(request); - break; - case 'change_log_status': - this.changeLogStatus(request); - default: - switch (JsStore.Status.ConStatus) { - case JsStore.ConnectionStatus.Connected: - { - this.executeLogic(request); - } - ; - break; - case JsStore.ConnectionStatus.Closed: - { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - ; - break; - } - } - }; - this.changeLogStatus = function (request) { - if (request.Query['logging'] === true) { - JsStore.EnableLog = true; - } - else { - JsStore.EnableLog = false; - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'bulk_insert': - this.bulkInsert(request.Query, OnSuccess, OnError); - break; - case 'export_json': - this.exportJson(request.Query, OnSuccess, OnError); - break; - default: console.error('The Api:-' + request.Name + 'does not support'); - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.bulkInsert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.BulkInsert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.exportJson = function (query, onSuccess, onError) { - this.select(query, function (results) { - var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], { - type: "text/json" - })); - onSuccess(Url); - }, function (err) { - onError(err); - }); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = /** @class */ (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.Sorted = false; - _this.CheckFlag = false; - _this.removeDuplicates = function () { - var Datas = this.Results; - //free results memory - this.Results = undefined; - var Key = this.getPrimaryKey(this.Query.From); - var lookupObject = {}; - for (var i in Datas) { - lookupObject[Datas[i][Key]] = Datas[i]; - } - //free datas memory - Datas = []; - for (i in lookupObject) { - Datas.push(lookupObject[i]); - } - this.Results = Datas; - }; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeSkipAndLimitForIn = function (column, values) { - var Cursor, Skip = this.SkipRecord, That = this, ColumnStore = this.ObjectStore.index(column), skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - skipOrPush(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeSkipForIn = function (column, values) { - var Cursor, Skip = this.SkipRecord, That = this, ColumnStore = this.ObjectStore.index(column), skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - skipOrPush((Cursor.value)); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeLimitForIn = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column); - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeSimpleForIn = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column); - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeInLogic = function (column, values) { - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimitForIn(column, values); - } - else if (this.SkipRecord) { - this.executeSkipForIn(column, values); - } - else if (this.LimitRecord) { - this.executeLimitForIn(column, values); - } - else { - this.executeSimpleForIn(column, values); - } - }; - return _this; - } - return In; - }(Select.NotWhere)); - Select.In = In; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSkip = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLimit = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSimple = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.In)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest, Cursor, executeSkipAndLimit = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeSkip = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeLimit = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }, executeSimple = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = /** @class */ (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var GroupByHelper = /** @class */ (function (_super) { - __extends(GroupByHelper, _super); - function GroupByHelper() { - var _this = _super.call(this) || this; - _this.executeAggregateGroupBy = function () { - var GrpQry = this.Query.GroupBy, Datas = this.Results, LookUpObj = {}; - //free results memory - this.Results = undefined; - //assign aggregate and free aggregate memory - var AggregateQry = this.Query.Aggregate; - this.Query.Aggregate = undefined; - var Index, ObjKey, Value, AggrColumn; - var calculateAggregate = function () { - for (var prop in AggregateQry) { - switch (prop) { - case 'Count': - var getCount = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Count(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? 1 : 0; - return Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Count(" + AggrColumn + ")"] = getCount(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Count(" + AggrColumn + ")"] = getCount(); - } - } - break; - case 'Max': - var getMax = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Max(" + AggrColumn + ")"] : 0; - Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - //compare between old value and new value - return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn]; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Max(" + AggrColumn + ")"] = getMax(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Max(" + AggrColumn + ")"] = getMax(); - } - } - break; - case 'Min': - var getMin = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Min(" + AggrColumn + ")"] : Infinity; - Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity; - //compare between old value and new value - return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn]; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Min(" + AggrColumn + ")"] = getMin(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Min(" + AggrColumn + ")"] = getMin(); - } - } - break; - case 'Sum': - var getSum = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Sum(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - return Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Sum(" + AggrColumn + ")"] = getSum(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Sum(" + AggrColumn + ")"] = getSum(); - } - } - break; - case 'Avg': - var getAvg = function () { - Value = LookUpObj[ObjKey]; - //get old sum value - var Sum = Value ? Value["Sum(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - Datas[Index]["Sum(" + AggrColumn + ")"] = Sum; - //get old count value - Value = Value ? Value["Count(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? 1 : 0; - Datas[Index]["Count(" + AggrColumn + ")"] = Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - getAvg(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - getAvg(); - } - } - break; - } - } - }; - if (typeof GrpQry == 'string') { - for (Index in Datas) { - ObjKey = Datas[Index][GrpQry]; - calculateAggregate(); - LookUpObj[ObjKey] = Datas[Index]; - } - } - else { - for (Index in Datas) { - ObjKey = ""; - for (var column in GrpQry) { - ObjKey += Datas[Index][GrpQry[column]]; - } - calculateAggregate(); - LookUpObj[ObjKey] = Datas[Index]; - } - } - //free datas memory - Datas = []; - for (var i in LookUpObj) { - Datas.push(LookUpObj[i]); - } - //Checking for avg and if exist then fill the datas; - if (AggregateQry.Avg) { - if (typeof AggregateQry.Avg == 'string') { - for (Index in Datas) { - var Sum = Datas[Index]["Sum(" + AggregateQry.Avg + ")"], Count = Datas[Index]["Count(" + AggregateQry.Avg + ")"]; - Datas[Index]["Avg(" + AggregateQry.Avg + ")"] = Sum / Count; - if (AggregateQry.Count !== AggregateQry.Avg) { - delete Datas[Index]["Count(" + AggregateQry.Avg + ")"]; - } - if (AggregateQry.Sum !== AggregateQry.Avg) { - delete Datas[Index]["Sum(" + AggregateQry.Avg + ")"]; - } - } - } - else { - var IsCountTypeString = typeof AggregateQry.Count, IsSumTypeString = typeof AggregateQry.Count; - for (Index in Datas) { - for (var column in AggregateQry.Avg) { - var AvgColumn = AggregateQry.Avg[column], Sum = Datas[Index]["Sum(" + AvgColumn + ")"], Count = Datas[Index]["Count(" + AvgColumn + ")"]; - Datas[Index]["Avg(" + AvgColumn + ")"] = Sum / Count; - if (IsCountTypeString) { - if (AggregateQry.Count !== AvgColumn) { - delete Datas[Index]["Count(" + AvgColumn + ")"]; - } - else if (AggregateQry.Count.indexOf(AvgColumn) == -1) { - delete Datas[Index]["Count(" + AvgColumn + ")"]; - } - } - if (IsSumTypeString) { - if (AggregateQry.Sum !== AvgColumn) { - delete Datas[Index]["Sum(" + AvgColumn + ")"]; - } - else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) { - delete Datas[Index]["Sum(" + AvgColumn + ")"]; - } - } - } - } - } - } - this.Results = Datas; - }; - _this.processGroupBy = function () { - var GrpQry = this.Query.GroupBy, Datas = this.Results, LookUpObj = {}; - //free results memory - this.Results = this.Query.GroupBy = undefined; - if (typeof GrpQry == 'string') { - for (var i in Datas) { - LookUpObj[Datas[i][GrpQry]] = Datas[i]; - } - } - else { - var ObjKey; - for (var i in Datas) { - ObjKey = ""; - for (var column in GrpQry) { - ObjKey += Datas[i][GrpQry[column]]; - } - LookUpObj[ObjKey] = Datas[i]; - } - } - //free datas memory - Datas = []; - for (i in LookUpObj) { - Datas.push(LookUpObj[i]); - } - this.Results = Datas; - }; - return _this; - } - return GroupByHelper; - }(Select.Where)); - Select.GroupByHelper = GroupByHelper; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Helper = /** @class */ (function (_super) { - __extends(Helper, _super); - function Helper() { - var _this = _super.call(this) || this; - _this.processOrderBy = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - } - }; - _this.processAggregateQry = function () { - var Datas = this.Results, Results = {}, Key; - //free results memory - this.Results = undefined; - for (var prop in this.Query.Aggregate) { - switch (prop) { - case 'Count': - var getCount = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key] ? 1 : 0; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Count(" + Key + ")"] = getCount(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Count(" + Key + ")"] = getCount(); - } - } - break; - case 'Max': - var getMax = function () { - var Result = 0; - for (var i in Datas) { - Result = Result > Datas[i][Key] ? Result : Datas[i][Key]; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Max(" + Key + ")"] = getMax(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Max(" + Key + ")"] = getMax(); - } - } - break; - case 'Min': - var getMin = function () { - var Result = Infinity, Value = Infinity; - for (var i in Datas) { - Value = Datas[i][Key] ? Datas[i][Key] : Infinity; - Result = Result < Value ? Result : Value; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Min(" + Key + ")"] = getMin(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Min(" + Key + ")"] = getMin(); - } - } - break; - case 'Sum': - var getSum = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key]; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Sum(" + Key + ")"] = getSum(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Sum(" + Key + ")"] = getSum(); - } - } - break; - case 'Avg': - var getAvg = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key]; - } - ; - return Result / Datas.length; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Avg(" + Key + ")"] = getAvg(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Avg(" + Key + ")"] = getAvg(); - } - } - break; - } - } - //add results to the first index of result - for (var prop in Results) { - Datas[0][prop] = Results[prop]; - } - this.Results = Datas; - }; - return _this; - } - return Helper; - }(Select.GroupByHelper)); - Select.Helper = Helper; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.processOrderBy(); - if (this.Query.GroupBy) { - if (this.Query.Aggregate) { - this.executeAggregateGroupBy(); - } - else { - this.processGroupBy(); - } - } - else if (this.Query.Aggregate) { - this.processAggregateQry(); - } - this.OnSuccess(this.Results); - } - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.orQuerySuccess = function () { - this.Results = this.OrInfo.Results; - //free var memory - this.OrInfo.Results = undefined; - this.removeDuplicates(); - this.OrInfo.OnSucess(this.Results); - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess, - Results: [] - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - this.OrInfo.Results = this.OrInfo.Results.concat(this.Results); - if (!this.Query.Limit || (this.Query.Limit > this.OrInfo.Results.length)) { - this.Results = []; - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.orQuerySuccess(); - } - } - else { - this.orQuerySuccess(); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Helper)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = /** @class */ (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column), CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - if (this.ObjectStore.count) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.count(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - That.ResultCount += e.target.result; - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Count.NotWhere)); - Count.In = In; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Count.In)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (That.CheckFlag) { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - That.ObjectStore = That.Transaction.objectStore(query.From); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where != undefined) { - if (query.Where.Or) { - new Business.Select.Instance(query, function (results) { - That.ResultCount = results.length; - That.onTransactionCompleted(); - }, _this.OnError); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = /** @class */ (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column), CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Update.NotWhere)); - Update.In = In; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Update.In)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.In); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - var That = this; - new Business.Select.Instance({ - From: this.Query.In, - Where: this.Query.Where - }, function (results) { - var Key = That.getPrimaryKey(That.Query.In), InQuery = [], WhereQry = {}; - results.forEach(function (value) { - InQuery.push(value[Key]); - }); - WhereQry[Key] = { In: InQuery }; - That.createtransactionForOrLogic({ - In: That.Query.In, - Where: WhereQry, - Set: That.Query.Set - }); - }, this.OnError); - }; - try { - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - var That = _this; - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(query.In); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - if (suppliedValue) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - } - else { - this.ErrorOccured = true; - //execute onSuccess with supplying 0 as rows affected - this.OnSuccess(0); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = /** @class */ (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column), CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Delete.NotWhere)); - Delete.In = In; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this, Cursor; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Delete.In)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.OrInfo.OnSucess(this.RowAffected); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = /** @class */ (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.prcoessExecutionOfCode = function (request) { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - switch (request.Name) { - case 'create_db': - case 'open_db': - this.RequestQueue.splice(0, 0, request); - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - ; - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - break; - default: this.RequestQueue.push(request); - } - } - else { - this.RequestQueue.push(request); - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - } - if (JsStore.EnableLog) { - console.log("request pushed: " + request.Name); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - if (JsStore.EnableLog) { - console.log("request executing : " + FirstRequest.Name); - } - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - this.executeCode(); - } - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - That.executeCodeUsingWorker({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - That.executeCode(); - } - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.openDb = function (dbName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'open_db', - Query: dbName, - OnSuccess: onSuccess, - OnError: onError, - }); - return this; - }; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }); - return this; - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - _this.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'select', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'count', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'update', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - _this.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'delete', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }); - return this; - }; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.bulkInsert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess, OnError = query.OnError ? query.OnError : onError; - query.OnSuccess = null; - query.OnError = null; - this.prcoessExecutionOfCode({ - Name: 'bulk_insert', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - return this; - }; - /** - * export the result in json file - * - * @param {ISelect} qry - * @memberof Instance - */ - _this.exportJson = function (query) { - var OnSuccess = function (url) { - var Link = document.createElement("a"); - Link.href = url; - Link.download = query.From + ".json"; - Link.click(); - if (OnSuccessCallBack) { - OnSuccessCallBack(); - } - }, OnError = query['OnError'], OnSuccessCallBack = query['OnSuccess']; - query['OnSuccess'] = query['OnError'] = undefined; - this.prcoessExecutionOfCode({ - Name: 'export_json', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }); - }; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - JsStore.WorkerInstance.terminate(); - } - else if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - KeyStore.init(); - } - _this.createWorker(); - if (dbName) { - _this.openDb(dbName); - } - return _this; - } - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -if (self && !self.alert) { - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name: " + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - KeyStore.init(); -} -//# sourceMappingURL=JsStore-1.2.5.js.map \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.5/JsStore-1.2.5.js.map b/Dist/V 1.2/V 1.2.5/JsStore-1.2.5.js.map deleted file mode 100644 index addc0645..00000000 --- a/Dist/V 1.2/V 1.2.5/JsStore-1.2.5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.2.5.js","sourceRoot":"","sources":["../License.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../JsStore/enums.ts","../JsStore/interfaces.ts","../JsStore/CommonLogic.ts","../JsStore/UtilsLogic.ts","../JsStore/HelperLogic.ts","../JsStore/Model/Column.ts","../JsStore/Model/Table.ts","../JsStore/Model/DataBase.ts","../JsStore/Business/BaseHelperLogic.ts","../JsStore/Business/BaseLogic.ts","../JsStore/Business/CreateDbLogic.ts","../JsStore/Business/DropDbLogic.ts","../JsStore/Business/InsertHelperLogic.ts","../JsStore/Business/InsertLogic.ts","../JsStore/Business/BulkInsertLogic.ts","../JsStore/Business/OpenDbLogic.ts","../JsStore/Business/ClearLogic.ts","../JsStore/Business/MainLogic.ts","../JsStore/Business/Select/BaseSelectLogic.ts","../JsStore/Business/Select/NotWhereLogic.ts","../JsStore/Business/Select/InLogic.ts","../JsStore/Business/Select/LikeLogic.ts","../JsStore/Business/Select/WhereLogic.ts","../JsStore/Business/Select/JoinLogic.ts","../JsStore/Business/Select/GroupByHelperLogic.ts","../JsStore/Business/Select/HelperLogic.ts","../JsStore/Business/Select/InstanceLogic.ts","../JsStore/Business/Count/BaseCountLogic.ts","../JsStore/Business/Count/NotWhereLogic.ts","../JsStore/Business/Count/InLogic.ts","../JsStore/Business/Count/LikeLogic.ts","../JsStore/Business/Count/WhereLogic.ts","../JsStore/Business/Count/InstanceLogic.ts","../JsStore/Business/Update/BaseUpdateLogic.ts","../JsStore/Business/Update/NotWhereLogic.ts","../JsStore/Business/Update/InLogic.ts","../JsStore/Business/Update/LikeLogic.ts","../JsStore/Business/Update/WhereLogic.ts","../JsStore/Business/Update/InstanceLogic.ts","../JsStore/Business/Delete/BaseDeleteLogic.ts","../JsStore/Business/Delete/NotWhereLogic.ts","../JsStore/Business/Delete/InLogic.ts","../JsStore/Business/Delete/LikeLogic.ts","../JsStore/Business/Delete/WhereLogic.ts","../JsStore/Business/Delete/InstanceLogic.ts","../JsStore/CodeExecutionHelper.ts","../JsStore/JsStoreInstance.ts","../JsStore/DirectCode.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.2.5 - 08/11/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n\r\n export enum WhereQryOption {\r\n In = \"In\",\r\n Like = \"Like\",\r\n Or = \"Or\"\r\n }\r\n\r\n export enum DataType {\r\n String = \"string\",\r\n Object = \"object\",\r\n Array = \"array\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder,\r\n GroupBy: any,\r\n Aggregate: {\r\n Max: any,\r\n Min: any,\r\n Count: any,\r\n Sum: any,\r\n Avg: any\r\n },\r\n IgnoreCase: boolean\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n IgnoreCase: boolean,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipDataCheck\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n\r\n export interface IAggregate {\r\n Max: Array,\r\n Min: Array,\r\n Sum: Array,\r\n Count: Array,\r\n Avg: Array\r\n }\r\n\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n}","module JsStore {\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function = null) {\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n else {\r\n if (errCallBack) {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BaseHelper {\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n\r\n protected sortNumberInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a - b;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortNumberInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b - a;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b.toLowerCase().localeCompare(a.toLowerCase());\r\n });\r\n return values;\r\n };\r\n\r\n private getCombination(word: string) {\r\n var Results = [],\r\n doAndPushCombination = function (word: string, chars, index: number) {\r\n if (index == word.length) {\r\n Results.push(chars.join(\"\"));\r\n } else {\r\n var ch = word.charAt(index);\r\n chars[index] = ch.toLowerCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n chars[index] = ch.toUpperCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n }\r\n };\r\n doAndPushCombination(word, [], 0);\r\n return Results;\r\n }\r\n\r\n protected getAllCombinationOfWord(word, isArray) {\r\n if (isArray) {\r\n var Results = [];\r\n for (var i = 0, length = word.length; i < length; i++) {\r\n Results = Results.concat(this.getCombination(word[i]))\r\n }\r\n return Results;\r\n }\r\n else {\r\n return this.getCombination(word);\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base extends BaseHelper {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.Query.IgnoreCase === true) {\r\n this.Query.Where = this.makeQryInCaseSensitive(this.Query.Where);\r\n }\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In':\r\n this.executeInLogic(Column, Value['In']);\r\n break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n case 'Aggregate': break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected makeQryInCaseSensitive = function (qry) {\r\n var Results = [],\r\n Qry;\r\n for (var item in qry) {\r\n Qry = qry[item];\r\n switch (item) {\r\n case WhereQryOption.In:\r\n for (var value in Qry) {\r\n Results = Results.concat(this.getAllCombinationOfWord(Qry['In'], true));\r\n }\r\n break;\r\n case WhereQryOption.Like: break;\r\n default:\r\n Results = Results.concat(this.getAllCombinationOfWord(Qry));\r\n }\r\n qry[item] = {\r\n In: Results\r\n }\r\n Results = [];\r\n }\r\n return qry;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n DbConnection.close();\r\n setTimeout(function () {\r\n That.deleteDb(name, onSuccess, onError);\r\n }, 100);\r\n }\r\n\r\n deleteDb = function (name: string, onSuccess: Function, onError: Function) {\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"database is blocked, cant be deleted right now.\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n onSuccess();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class InsertHelper extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n protected checkModifyInsertValues = function (table, values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n Value,\r\n TableName = table.Name,\r\n checkDatas = function () {\r\n Value = values[ValueIndex++];\r\n checkInternal();\r\n },\r\n checkInternal = function () {\r\n if (Value) {\r\n checkAndModifyValue();\r\n }\r\n else {\r\n That.insertData(values);\r\n }\r\n },\r\n checkAndModifyValue = function () {\r\n var Index = 0,\r\n checkAndModifyColumn = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(Value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof Value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n Value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && Value[column.Name] == null) { //check Default Schema\r\n Value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n }\r\n else {\r\n checkDatas();\r\n }\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n }\r\n checkDatas();\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends InsertHelper {\r\n private insertData = function (values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable: Function;\r\n if (IsReturn) {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n That.ValuesAffected.push(value);\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n ++That.RowAffected;\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n }\r\n }\r\n }\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n var ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var Table = this.getTable(query.Into);\r\n if (Table) {\r\n if (this.Query.SkipDataCheck) {\r\n this.insertData(this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n else {\r\n this.checkModifyInsertValues(Table, this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BulkInsert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private bulkinsertData = function () {\r\n var That = this;\r\n this.Transaction = DbConnection.transaction([this.Query.Into], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(this.Query.Into);\r\n this.Transaction.oncomplete = function (e) {\r\n That.OnSuccess();\r\n }\r\n this.Query.Values.forEach(function (value) {\r\n That.ObjectStore.add(value);\r\n });\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.bulkinsertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.executeLogic(request);\r\n break;\r\n case 'change_log_status':\r\n this.changeLogStatus(request);\r\n default:\r\n switch (Status.ConStatus) {\r\n case ConnectionStatus.Connected: {\r\n this.executeLogic(request);\r\n }; break;\r\n case ConnectionStatus.Closed: {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }; break;\r\n }\r\n }\r\n }\r\n\r\n private changeLogStatus = function (request) {\r\n if (request.Query['logging'] === true) {\r\n EnableLog = true;\r\n }\r\n else {\r\n EnableLog = false;\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'bulk_insert': this.bulkInsert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'export_json': this.exportJson(request.Query, OnSuccess, OnError);\r\n break;\r\n default: console.error('The Api:-' + request.Name + 'does not support');\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public bulkInsert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new BulkInsert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n\r\n public exportJson = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n this.select(query, function (results) {\r\n var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], {\r\n type: \"text/json\"\r\n }));\r\n onSuccess(Url);\r\n }, function (err) {\r\n onError(err);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class In extends NotWhere {\r\n\r\n private executeSkipAndLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n skipOrPush(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkipForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n skipOrPush((Cursor.value));\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeSimpleForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n protected executeInLogic = function (column, values) {\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimitForIn(column, values);\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkipForIn(column, values);\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimitForIn(column, values);\r\n }\r\n else {\r\n this.executeSimpleForIn(column, values);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class GroupByHelper extends Where {\r\n constructor() {\r\n super();\r\n }\r\n\r\n private executeAggregateGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = undefined;\r\n //assign aggregate and free aggregate memory\r\n var AggregateQry = this.Query.Aggregate;\r\n this.Query.Aggregate = undefined;\r\n var Index, ObjKey, Value, AggrColumn;\r\n var calculateAggregate = function () {\r\n for (var prop in AggregateQry) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Max(\" + AggrColumn + \")\"] : 0;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n //compare between old value and new value\r\n return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Min(\" + AggrColumn + \")\"] : Infinity;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity;\r\n //compare between old value and new value\r\n return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old sum value\r\n var Sum = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = Sum;\r\n //get old count value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = Value;\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n getAvg();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (typeof GrpQry == 'string') {\r\n for (Index in Datas) {\r\n ObjKey = Datas[Index][GrpQry];\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n }\r\n else {\r\n for (Index in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[Index][GrpQry[column]];\r\n }\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (var i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n //Checking for avg and if exist then fill the datas;\r\n if (AggregateQry.Avg) {\r\n if (typeof AggregateQry.Avg == 'string') {\r\n for (Index in Datas) {\r\n var Sum = Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"],\r\n Count = Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n Datas[Index][\"Avg(\" + AggregateQry.Avg + \")\"] = Sum / Count;\r\n if (AggregateQry.Count !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n }\r\n if (AggregateQry.Sum !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"];\r\n }\r\n }\r\n }\r\n else {\r\n var IsCountTypeString = typeof AggregateQry.Count,\r\n IsSumTypeString = typeof AggregateQry.Count;\r\n for (Index in Datas) {\r\n for (var column in AggregateQry.Avg) {\r\n var AvgColumn = AggregateQry.Avg[column],\r\n Sum = Datas[Index][\"Sum(\" + AvgColumn + \")\"],\r\n Count = Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n Datas[Index][\"Avg(\" + AvgColumn + \")\"] = Sum / Count;\r\n\r\n if (IsCountTypeString) {\r\n if (AggregateQry.Count !== AvgColumn) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Count.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n\r\n if (IsSumTypeString) {\r\n if (AggregateQry.Sum !== AvgColumn) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.Results = Datas;\r\n };\r\n\r\n protected processGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = this.Query.GroupBy = undefined;\r\n if (typeof GrpQry == 'string') {\r\n for (var i in Datas) {\r\n LookUpObj[Datas[i][GrpQry]] = Datas[i];\r\n }\r\n }\r\n else {\r\n var ObjKey;\r\n for (var i in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[i][GrpQry[column]];\r\n }\r\n LookUpObj[ObjKey] = Datas[i];\r\n }\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Helper extends GroupByHelper {\r\n processOrderBy = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private processAggregateQry = function () {\r\n var Datas = this.Results,\r\n Results = {},\r\n Key;\r\n //free results memory\r\n this.Results = undefined;\r\n for (var prop in this.Query.Aggregate) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key] ? 1 : 0;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result = Result > Datas[i][Key] ? Result : Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n var Result = Infinity, Value = Infinity;\r\n for (var i in Datas) {\r\n Value = Datas[i][Key] ? Datas[i][Key] : Infinity;\r\n Result = Result < Value ? Result : Value;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result / Datas.length;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n //add results to the first index of result\r\n for (var prop in Results) {\r\n Datas[0][prop] = Results[prop];\r\n }\r\n this.Results = Datas;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Helper {\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.processOrderBy();\r\n if (this.Query.GroupBy) {\r\n if (this.Query.Aggregate) {\r\n this.executeAggregateGroupBy();\r\n }\r\n else {\r\n this.processGroupBy();\r\n }\r\n }\r\n else if (this.Query.Aggregate) {\r\n this.processAggregateQry();\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.count(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n That.ResultCount += (e).target.result;\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (That.CheckFlag) {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n protected onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this,\r\n Cursor: IDBCursorWithValue;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n protected prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.RequestQueue.splice(0, 0, request);\r\n if (WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n };\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n break;\r\n default: this.RequestQueue.push(request);\r\n }\r\n }\r\n else {\r\n this.RequestQueue.push(request);\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n if (EnableLog) {\r\n console.log(\"request pushed: \" + request.Name);\r\n }\r\n\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + FirstRequest.Name)\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n protected createWorker = function () {\r\n var That: CodeExecutionHelper = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n That.executeCodeUsingWorker({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n That.executeCode();\r\n }\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\nmodule JsStore {\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n WorkerInstance.terminate();\r\n }\r\n else if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n KeyStore.init();\r\n }\r\n this.createWorker();\r\n if (dbName) {\r\n this.openDb(dbName);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * open database\r\n * \r\n * @param {string} dbName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n openDb = function (dbName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'open_db',\r\n Query: dbName,\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {Model.IDataBase} dataBase \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n createDb = function (dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb = function (onSuccess: Function, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select = function (query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count = function (query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update = function (query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete = function (query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear = function (tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * insert bulk amount of data\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n bulkInsert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n var OnSuccess = query.OnSuccess ? query.OnSuccess : onSuccess,\r\n OnError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = null;\r\n query.OnError = null;\r\n this.prcoessExecutionOfCode({\r\n Name: 'bulk_insert',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * export the result in json file\r\n * \r\n * @param {ISelect} qry \r\n * @memberof Instance\r\n */\r\n exportJson = function (query: ISelect) {\r\n var OnSuccess = function (url) {\r\n var Link = document.createElement(\"a\");\r\n Link.href = url;\r\n Link.download = query.From + \".json\";\r\n Link.click();\r\n if (OnSuccessCallBack) {\r\n OnSuccessCallBack();\r\n }\r\n },\r\n OnError = query['OnError'],\r\n OnSuccessCallBack = query['OnSuccess'];\r\n query['OnSuccess'] = query['OnError'] = undefined;\r\n this.prcoessExecutionOfCode({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n });\r\n\r\n }\r\n }\r\n}\r\n","if (self && !self.alert) {\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name: \" + e.data.Name);\r\n }\r\n var Request = e.data,\r\n IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered;\r\n KeyStore.init();\r\n}\r\n\r\n"]} \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.5/JsStore-1.2.5.min.js b/Dist/V 1.2/V 1.2.5/JsStore-1.2.5.min.js deleted file mode 100644 index 3746dcab..00000000 --- a/Dist/V 1.2/V 1.2.5/JsStore-1.2.5.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.2.5 - 08/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var r=this;new e.Business.Main(function(e){r.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var r=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?r.OnError?r.OnError(t.ErrorDetails):console.log(t.ErrorDetails):r.OnSuccess&&(null!=t.ReturnedValue?r.OnSuccess(t.ReturnedValue):r.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,r){var n=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(r));n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},n.onsuccess=function(t){var r=t.target.result;r&&(e.Results=r.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([r.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(r.From),s.Transaction.oncomplete=function(e){null!=n&&n(u.Results)},s.get(),s}return __extends(r,t),r}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.setData=function(e){var t=this,r=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var n=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));n.onsuccess=function(t){var n=t.target.result;n?(n.value.Value=e.Value,n.update(n.value)):r()},n.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([r.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(r.TableName),s.Transaction.oncomplete=function(e){null!=n&&n()},s.setData(r.Set)}catch(e){console.error(e)}return s}return __extends(r,t),r}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,r){var n=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(r));n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},n.onsuccess=function(t){var r=t.target.result;r&&(r.delete(),++e.RowAffected,r.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([r.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(r.From),s.Transaction.oncomplete=function(){null!=n&&n(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(r,t),r}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var r=function(){return function(r,n,o,s){var u=self.indexedDB.open(r,1);u.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},u.onsuccess=function(r){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(r){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(n,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=r}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var r=function(){return function(r){void 0===r&&(r=null),this.checkConnectionAndExecuteLogic=function(r){if("create_db"==r.Name||"open_db"==r.Name)this.executeLogic(r);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(r);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)n=this,setTimeout(function(){n.checkConnectionAndExecuteLogic(r)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var n=this;this.createDb(e.TableName,function(){n.checkConnectionAndExecuteLogic(r)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,r=function(e){t.returnResult({ReturnedValue:e})},n=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,r,n);break;case"set":this.set(e.Query,r,n);break;case"remove":this.remove(e.Query,r,n);break;case"create_db":this.createDb(e.Query,r,n)}},this.set=function(e,r,n){new t.Set(e,r,n)},this.remove=function(e,r,n){new t.Remove(e,r,n)},this.get=function(e,r,n){new t.Get(e,r,n)},this.createDb=function(e,r,n){new t.InitDb("KeyStore",e,r,n)},this.OnSuccess=r}}();t.Main=r}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,r,n){void 0===n&&(n=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:r,OnError:n}),this},e.set=function(t,r,n,o){void 0===n&&(n=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:r}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:n,OnError:o}),this},e.remove=function(t,r,n){void 0===r&&(r=null),void 0===n&&(n=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:r,OnError:n}),this}}(KeyStore||(KeyStore={}));var JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.In="In",e.Like="Like",e.Or="Or"}(e.WhereQryOption||(e.WhereQryOption={}));!function(e){e.String="string",e.Object="object",e.Array="array"}(e.DataType||(e.DataType={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.TempResults=[],e.throwError=function(e){throw e},e.getObjectFirstKey=function(e){for(var t in e)return t;return null}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,r){var n={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:n.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:n.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:n.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:n.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:n.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:n.Message="No value supplied";break;case e.ErrorType.InvalidOp:n.Message="Invalid Op Value '"+r.Op+"'";break;case e.ErrorType.ColumnNotExist:n.Message="Column '"+r.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:n.Message="Null value is not allowed for column '"+r.ColumnName+"'";break;case e.ErrorType.BadDataType:n.Message="Supplied value for column '"+r.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:n.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:n.Message="Table '"+r.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:n.Message="Database '"+r.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return n},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),r=t.length;r--;){var n=t[r];e[n.toLowerCase()]=e[n],delete e[n]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,r,n){if(void 0===n&&(n=null),e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){"string"==typeof t?e.getDbVersion(t,function(e){r(Boolean(e))}):e.getDbVersion(t.DbName,function(e){r(t.Table.Version<=e)})}else if(n){var o={Name:e.Status.LastError,Message:""};switch(o.Name){case e.ErrorType.IndexedDbBlocked:o.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:o.Message="IndexedDB is not supported"}n(o)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})},e.disableLog=function(){e.EnableLog=!1,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(t,r){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+r),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=r}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){function r(e,r){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var n=this;e.Columns.forEach(function(r){n.Columns.push(new t.Column(r,e.Name))}),this.setRequireDelete(r),this.setDbVersion(r),this.setPrimaryKey(r)}return r.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},r.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:er.Version?e.DbVersion:r.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+r.Name+"_Version",e.DbVersion),r.Version=e.DbVersion},r}();t.Table=r}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var r=this;this.Name=t.Name,t.Tables.forEach(function(t){r.Tables.push(new e.Table(t,r.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){function t(){this.getTable=function(t){var r;return e.ActiveDataBase.Tables.every(function(e){return e.Name!=t||(r=e,!1)}),r},this.getKeyRange=function(e,t){var r;switch(t){case"-":r=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":r=IDBKeyRange.lowerBound(e,!0);break;case">=":r=IDBKeyRange.lowerBound(e);break;case"<":r=IDBKeyRange.upperBound(e,!0);break;case"<=":r=IDBKeyRange.upperBound(e);break;default:r=IDBKeyRange.only(e)}return r},this.getObjectSecondKey=function(e){var t=!1;for(var r in e){if(t)return r;t=!0}},this.getPrimaryKey=function(e){var t=this.getTable(e).PrimaryKey;return t||this.getKeyPath()},this.getKeyPath=function(t){return e.DbConnection.transaction([t],"readonly").objectStore(t).keyPath},this.sortNumberInAsc=function(e){return e.sort(function(e,t){return e-t}),e},this.sortNumberInDesc=function(e){return e.sort(function(e,t){return t-e}),e},this.sortAlphabetInAsc=function(e){return e.sort(function(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}),e},this.sortAlphabetInDesc=function(e){return e.sort(function(e,t){return t.toLowerCase().localeCompare(e.toLowerCase())}),e}}return t.prototype.getCombination=function(e){var t=[],r=function(e,n,o){if(o==e.length)t.push(n.join(""));else{var s=e.charAt(o);n[o]=s.toLowerCase(),r(e,n,o+1),n[o]=s.toUpperCase(),r(e,n,o+1)}};return r(e,[],0),t},t.prototype.getAllCombinationOfWord=function(e,t){if(t){for(var r=[],n=0,o=e.length;n1||Object.keys(this.Query.Where).length>1);var n=e.getObjectFirstKey(r);switch(n){case"Like":var o=r.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":this.executeInLogic(t,r.In);break;case"-":case">":case"<":case">=":case"<=":this.executeWhereLogic(t,r,n);break;case"Aggregate":break;default:this.executeWhereLogic(t,r)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,r)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)},r.makeQryInCaseSensitive=function(t){var r,n=[];for(var o in t){switch(r=t[o],o){case e.WhereQryOption.In:for(var s in r)n=n.concat(this.getAllCombinationOfWord(r.In,!0));break;case e.WhereQryOption.Like:break;default:n=n.concat(this.getAllCombinationOfWord(r))}t[o]={In:n},n=[]}return t},r}return __extends(r,t),r.prototype.checkForWhereConditionMatch=function(t){var r=this.Query.Where,n=!0;for(var o in r){var s=r[o];if(!n)break;if("object"==typeof s)for(var u in s){if(!n)break;switch(u){case"In":!function(e,t){for(var o=r[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(i=o.indexOf(u.toLowerCase()))<0&&(n=!1);break;case e.Occurence.First:((i=o.indexOf(u.toLowerCase()))>0||i<0)&&(n=!1);break;default:(i=o.lastIndexOf(u.toLowerCase()))":case"<":case">=":case"<=":!function(e,t,o){var s=r[e][o];switch(o){case">":t<=s&&(n=!1);break;case"<":t>=s&&(n=!1);break;case"<=":t>s&&(n=!1);break;case">=":ts.High)&&(n=!1)}}(o,t[o],u)}}else if(s!=t[o]){n=!1;break}}return n},r}(t.BaseHelper);t.Base=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){var s=[],u=indexedDB.open(t.ActiveDataBase.Name,r);u.onerror=function(e){null!=o&&o(e.target.error)},u.onsuccess=function(r){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=n&&n(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},u.onupgradeneeded=function(e){var r=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(r.objectStoreNames.contains(e.Name)&&r.deleteObjectStore(e.Name),i(r,e)):e.RequireCreation&&i(r,e)})};var i=function(e,r){try{if(r.PrimaryKey.length>0)n=e.createObjectStore(r.Name,{keyPath:r.PrimaryKey}),r.Columns.forEach(function(e){e.PrimaryKey?n.createIndex(e.Name,e.Name,{unique:!0}):n.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_"+e.Name+"_Value",0)});else{var n=e.createObjectStore(r.Name,{autoIncrement:!0});r.Columns.forEach(function(e){n.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_"+e.Name+"_Value",0)})}s.push(r.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_Version",r.Version)}catch(e){console.error(e)}}}}();t.CreateDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){this.deleteDb=function(r,n,o){var s=indexedDB.deleteDatabase(r);s.onblocked=function(){null!=o&&o("database is blocked, cant be deleted right now.")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(r){r.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+r.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),n()}};var s=this;t.DbConnection.close(),setTimeout(function(){s.deleteDb(r,n,o)},100)}}();t.DropDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(){var n=null!==r&&r.apply(this,arguments)||this;return n.ValuesAffected=[],n.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},n.checkModifyInsertValues=function(r,n){var o,s=this,u=0,i=r.Name,c=function(){o=n[u++],a()},a=function(){o?l():s.insertData(n)},l=function(){var n=0,u=function(a){if(a){var l=function(t,r){s.ErrorOccured=!0,s.Error=e.Utils.getError(t,r)},h=function(){a.NotNull&&e.isNull(o[a.Name])?l(e.ErrorType.NullValue,{ColumnName:a.Name}):a.DataType&&typeof o[a.Name]!=a.DataType&&l(e.ErrorType.BadDataType,{ColumnName:a.Name}),u(r.Columns[n++])};s.ErrorOccured?s.onErrorOccured(s.Error,!0):a.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",function(e){o[a.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",e),h()}):a.Default&&null==o[a.Name]?(o[a.Name]=a.Default,h()):h()}else c()};u(r.Columns[n++])};c()},n}return __extends(n,r),n}(t.Base);t.InsertHelper=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(n,o,s){var u=r.call(this)||this;u.insertData=function(e){var r,n=this,o=0,s=this.Query.Return;r=s?function(t){if(t){var s=u.add(t);s.onerror=function(e){n.onErrorOccured(e)},s.onsuccess=function(s){n.ValuesAffected.push(t),r(e[o++])}}}:function(t){if(t){var s=u.add(t);s.onerror=function(e){n.onErrorOccured(e)},s.onsuccess=function(t){++n.RowAffected,r(e[o++])}}},n.Transaction=t.DbConnection.transaction([n.Query.Into],"readwrite");var u=n.Transaction.objectStore(n.Query.Into);n.Transaction.oncomplete=function(e){n.onTransactionCompleted()},r(e[o++])};try{u.Query=n,u.OnSuccess=o,u.OnError=s;var i=u.getTable(n.Into);if(i)u.Query.SkipDataCheck?(u.insertData(u.Query.Values),u.Query.Values=void 0):(u.checkModifyInsertValues(i,u.Query.Values),u.Query.Values=void 0);else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:n.Into})}return u}return __extends(n,r),n}(t.InsertHelper);t.Insert=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(n,o,s){var u=r.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.bulkinsertData=function(){var e=this;this.Transaction=t.DbConnection.transaction([this.Query.Into],"readwrite"),this.ObjectStore=this.Transaction.objectStore(this.Query.Into),this.Transaction.oncomplete=function(t){e.OnSuccess()},this.Query.Values.forEach(function(t){e.ObjectStore.add(t)})};try{u.Query=n,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(n.Into),u.Table)u.bulkinsertData();else{var i=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n.Into});e.throwError(i)}}catch(e){u.onExceptionOccured(e,{TableName:n.Into})}return u}return __extends(n,r),n}(t.Base);t.BulkInsert=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,r);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(r){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=n&&n()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([r],"readwrite").objectStore(r).clear();return i.onsuccess=function(t){u.getTable(r).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+r+"_"+t.Name+"_Value")}),null!=n&&n()},i.onerror=function(e){null!=o&&o()},s}return __extends(r,t),r}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r){void 0===r&&(r=null),this.checkConnectionAndExecuteLogic=function(r){switch(e.EnableLog&&console.log("checking connection and executing request:"+r.Name),r.Name){case"create_db":case"open_db":this.executeLogic(r);break;case"change_log_status":this.changeLogStatus(r);default:switch(e.Status.ConStatus){case e.ConnectionStatus.Connected:this.executeLogic(r);break;case e.ConnectionStatus.Closed:var n=this;this.openDb(t.ActiveDataBase.Name,function(){n.checkConnectionAndExecuteLogic(r)})}}},this.changeLogStatus=function(t){!0===t.Query.logging?e.EnableLog=!0:e.EnableLog=!1},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,r=function(e){t.returnResult({ReturnedValue:e})},n=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,r,n);break;case"insert":this.insert(e.Query,r,n);break;case"update":this.update(e.Query,r,n);break;case"delete":this.delete(e.Query,r,n);break;case"open_db":this.openDb(e.Query,r,n);break;case"create_db":this.createDb(e.Query,r,n);break;case"clear":this.clear(e.Query,r,n);break;case"drop_db":this.dropDb(r,n);break;case"count":this.count(e.Query,r,n);break;case"bulk_insert":this.bulkInsert(e.Query,r,n);break;case"export_json":this.exportJson(e.Query,r,n);break;default:console.error("The Api:-"+e.Name+"does not support")}},this.openDb=function(r,n,o){KeyStore.get("JsStore_"+r+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:r});KeyStore.get("JsStore_"+r+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,n,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,r){new t.DropDb(t.ActiveDataBase.Name,e,r)},this.update=function(e,r,n){new t.Update.Instance(e,r,n)},this.insert=function(r,n,o){Array.isArray(r.Values)?new t.Insert(r,n,o):e.throwError("Value should be array :- supplied value is not array")},this.bulkInsert=function(r,n,o){Array.isArray(r.Values)?new t.BulkInsert(r,n,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,r,n){new t.Delete.Instance(e,r,n)},this.select=function(e,r,n){"object"==typeof e.From?new t.Select.Join(e,r,n):new t.Select.Instance(e,r,n)},this.count=function(e,r,n){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,r,n)):new t.Count.Instance(e,r,n)},this.createDb=function(r,n,o){KeyStore.get("JsStore_"+r.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(r);var u=function(){setTimeout(function(){var r=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_Version",function(s){s==r.Version?new t.CreateDb(e.DbVersion,n,o):u()})},200)};u()})},this.clear=function(e,r,n){new t.Clear(e,r,n)},this.exportJson=function(e,t,r){this.select(e,function(e){var r=URL.createObjectURL(new Blob([JSON.stringify(e)],{type:"text/json"}));t(r)},function(e){r(e)})},this.OnSuccess=r}}();t.Main=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.Sorted=!1,t.CheckFlag=!1,t.removeDuplicates=function(){var e=this.Results;this.Results=void 0;var t=this.getPrimaryKey(this.Query.From),r={};for(var n in e)r[e[n][t]]=e[n];e=[];for(n in r)e.push(r[n]);this.Results=e},t}return __extends(t,e),t}(e.Base);t.BaseSelect=r}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var r=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeWhereUndefinedLogic=function(){var t,r,n=this;if(this.Query.Order&&this.Query.Order.By)if(n.ObjectStore.indexNames.contains(this.Query.Order.By)){var o=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,r=this.ObjectStore.index(n.Query.Order.By).openCursor(null,o)}else{var s=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(s)}else r=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(r){(t=r.target.result)&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(t.value),t.continue()):(e=!0,t.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(r){(t=r.target.result)&&(e?(n.Results.push(t.value),t.continue()):(e=!0,t.advance(n.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){(t=e.target.result)&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:r.onsuccess=function(e){(t=e.target.result)&&(n.Results.push(t.value),t.continue())},r.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},r}return __extends(r,t),r}(t.BaseSelect);t.NotWhere=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeSkipAndLimitForIn=function(e,t){var r,n=this.SkipRecord,o=this,s=this.ObjectStore.index(e),u=function(e){0==n?o.Results.push(e):--n};if(o.CheckFlag)for(var i=0,c=t.length;i=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},r.executeSkipAndLimit=function(){var e,t=this.SkipRecord,r=this,n=function(e){0==t?r.Results.push(e):--t};r.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,r.Results.length!=r.LimitRecord&&e&&(r.filterOnOccurence(e.value)&&r.checkForWhereConditionMatch(e.value)&&n(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,r.Results.length!=r.LimitRecord&&e&&(r.filterOnOccurence(e.value)&&n(e.value),e.continue())}},r.executeSkip=function(){var e,t=this.SkipRecord,r=this,n=function(e){0==t?r.Results.push(e):--t};r.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(r.filterOnOccurence(e.value)&&r.checkForWhereConditionMatch(e.value)&&n(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(r.filterOnOccurence(e.value)&&n(e.value),e.continue())}},r.executeLimit=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(r){e=r.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(r){e=r.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},r.executeSimple=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(r){(e=r.target.result)&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(r){(e=r.target.result)&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},r.executeLikeLogic=function(e,t,r){var n=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n,o,s=this;t=r?t[r]:t,(n=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r))).onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?function(){var e=!1;s.CheckFlag?n.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:n.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;s.CheckFlag?n.onsuccess=function(t){(o=t.target.result)&&(e?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:n.onsuccess=function(t){(o=t.target.result)&&(e?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.LimitRecord?s.CheckFlag?n.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&s.checkForWhereConditionMatch(o.value)&&(s.Results.push(o.value),o.continue())}:n.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&(s.Results.push(o.value),o.continue())}:s.CheckFlag?n.onsuccess=function(e){(o=e.target.result)&&(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue())}:n.onsuccess=function(e){(o=e.target.result)&&(s.Results.push(o.value),o.continue())}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,r){var n,o=this,s=[],u=0,i=(r.Column,o.Results),c=i.length;new e.Instance({From:r.Table,Where:r.Where,Order:r.Order},function(e){e.forEach(function(e,r){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,n){if(s[u]={},e==t[r.Column]){s[u][r.Table]=t;for(c=0;cn.CurrentQueryStackIndex+1?n.startExecutionJoinLogic():n.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;in.CurrentQueryStackIndex+1?n.startExecutionJoinLogic():n.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][r.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},r}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=e.call(this)||this;return t.executeAggregateGroupBy=function(){var e=this.Query.GroupBy,t=this.Results,r={};this.Results=void 0;var n=this.Query.Aggregate;this.Query.Aggregate=void 0;var o,s,u,i,c=function(){for(var e in n)switch(e){case"Count":var c=function(){return u=r[s],u=u?u["Count("+i+")"]:0,u+=t[o][i]?1:0};if("string"==typeof n[e])i=n[e],t[o]["Count("+i+")"]=c();else if(Array.isArray(n[e]))for(var a in n[e])i=n[e][a],t[o]["Count("+i+")"]=c();break;case"Max":var l=function(){return u=r[s],u=u?u["Max("+i+")"]:0,t[o][i]=t[o][i]?t[o][i]:0,u>t[o][i]?u:t[o][i]};if("string"==typeof n[e])i=n[e],t[o]["Max("+i+")"]=l();else if(Array.isArray(n[e]))for(var a in n[e])i=n[e][a],t[o]["Max("+i+")"]=l();break;case"Min":var h=function(){return u=r[s],u=u?u["Min("+i+")"]:1/0,t[o][i]=t[o][i]?t[o][i]:1/0,u0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,r=e.By;"string"==typeof this.Results[0][r]?"asc"==e.Type?t.Results.sort(function(e,t){return e[r].toLowerCase().localeCompare(t[r].toLowerCase())}):t.Results.sort(function(e,t){return t[r].toLowerCase().localeCompare(e[r].toLowerCase())}):"number"==typeof this.Results[0][r]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[r]-t[r]}):t.Results.sort(function(e,t){return t[r]-e[r]}))}},t.processAggregateQry=function(){var e,t=this.Results,r={};this.Results=void 0;for(var n in this.Query.Aggregate)switch(n){case"Count":var o=function(){var r=0;for(var n in t)r+=t[n][e]?1:0;return r};if("string"==typeof this.Query.Aggregate[n])r["Count("+(e=this.Query.Aggregate[n])+")"]=o();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Count("+(e=this.Query.Aggregate[n][s])+")"]=o();break;case"Max":var u=function(){var r=0;for(var n in t)r=r>t[n][e]?r:t[n][e];return r};if("string"==typeof this.Query.Aggregate[n])r["Max("+(e=this.Query.Aggregate[n])+")"]=u();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Max("+(e=this.Query.Aggregate[n][s])+")"]=u();break;case"Min":var i=function(){var r=1/0,n=1/0;for(var o in t)r=r<(n=t[o][e]?t[o][e]:1/0)?r:n;return r};if("string"==typeof this.Query.Aggregate[n])r["Min("+(e=this.Query.Aggregate[n])+")"]=i();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Min("+(e=this.Query.Aggregate[n][s])+")"]=i();break;case"Sum":var c=function(){var r=0;for(var n in t)r+=t[n][e];return r};if("string"==typeof this.Query.Aggregate[n])r["Sum("+(e=this.Query.Aggregate[n])+")"]=c();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Sum("+(e=this.Query.Aggregate[n][s])+")"]=c();break;case"Avg":var a=function(){var r=0;for(var n in t)r+=t[n][e];return r/t.length};if("string"==typeof this.Query.Aggregate[n])r["Avg("+(e=this.Query.Aggregate[n])+")"]=a();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Avg("+(e=this.Query.Aggregate[n][s])+")"]=a()}for(var n in r)t[0][n]=r[n];this.Results=t},t}return __extends(t,e),t}(e.GroupByHelper);e.Helper=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(n,o,s){var u=r.call(this)||this;u.onTransactionCompleted=function(){this.SendResultFlag&&(this.processOrderBy(),this.Query.GroupBy?this.Query.Aggregate?this.executeAggregateGroupBy():this.processGroupBy():this.Query.Aggregate&&this.processAggregateQry(),this.OnSuccess(this.Results))},u.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readonly"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.orQuerySuccess=function(){this.Results=this.OrInfo.Results,this.OrInfo.Results=void 0,this.removeDuplicates(),this.OrInfo.OnSucess(this.Results)},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess,Results:[]},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){if(this.OrInfo.Results=this.OrInfo.Results.concat(this.Results),!this.Query.Limit||this.Query.Limit>this.OrInfo.Results.length){this.Results=[];var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.orQuerySuccess()}else this.orQuerySuccess()}};var i=u;u.Query=n,u.OnSuccess=o,u.OnError=s,u.SkipRecord=u.Query.Skip,u.LimitRecord=u.Query.Limit;try{u.Transaction=t.DbConnection.transaction([n.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.Transaction.ontimeout=i.onTransactionCompleted,u.ObjectStore=u.Transaction.objectStore(n.From),n.Where?(n.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:n.From})}return u}return __extends(n,r),n}(r.Helper);r.Instance=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=r}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var r,n=this.ObjectStore.openCursor();n.onsuccess=function(t){(r=t.target.result)&&(++e.ResultCount,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var r,n,o=this,s=this.ObjectStore.index(e);if(o.CheckFlag)for(var u=0,i=t.length;u=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},r.executeLikeLogic=function(e,t,r){var n,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&++o.ResultCount,n.continue())}:this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&++o.ResultCount,n.continue())}},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n=this;if(t=r?t[r]:t,n.CheckFlag){(u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r))).onsuccess=function(e){(s=e.target.result)&&(n.checkForWhereConditionMatch(s.value)&&++n.ResultCount,s.continue())},u.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}else if(this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,r));o.onsuccess=function(){n.ResultCount=o.result},o.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}else{var s,u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r));u.onsuccess=function(e){(s=e.target.result)&&(++n.ResultCount,s.continue())},u.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(t){function r(r,n,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=r,s.OnSuccess=n,s.OnError=o;try{var i=function(){u.Transaction=e.DbConnection.transaction([r.From],"readonly"),u.ObjectStore=u.Transaction.objectStore(r.From),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};void 0!=r.Where?r.Where.Or?new e.Select.Instance(r,function(e){u.ResultCount=e.length,u.onTransactionCompleted()},s.OnError):(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}catch(e){s.onExceptionOccured(e,{TableName:r.From})}return s}return __extends(r,t),r}(t.Where);t.Instance=r}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var r in e)if("object"!=typeof e[r])t[r]=e[r];else for(var n in e[r]){switch(n){case"+":t[r]+=e[r][n];break;case"-":t[r]-=e[r][n];break;case"*":t[r]*=e[r][n];break;case"/":t[r]/=e[r][n];break;default:t[r]=e[r]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.executeWhereUndefinedLogic=function(){var e,r=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){(e=n.target.result)&&(e.update(t.updateValue(r.Query.Set,e.value)),++r.RowAffected,e.continue())},n.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}},r}return __extends(r,e),r}(e.BaseUpdate);t.NotWhere=r}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeInLogic=function(t,r){var n,o,s=this,u=this.ObjectStore.index(t);if(s.CheckFlag)for(var i=0,c=r.length;i=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},n.executeLikeLogic=function(e,r,n){var o,s=this;this.CompValue=r.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},s.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&s.checkForWhereConditionMatch(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}:this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}},n}return __extends(n,r),n}(t.In);t.Like=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeWhereLogic=function(t,r,n){var o,s,u=this;r=n?r[n]:r,s=this.ObjectStore.index(t).openCursor(this.getKeyRange(r,n)),u.CheckFlag?s.onsuccess=function(t){(o=t.target.result)&&(u.checkForWhereConditionMatch(o.value)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected),o.continue())}:s.onsuccess=function(t){(o=t.target.result)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected,o.continue())},s.onerror=function(e){u.ErrorOccured=!0,u.onErrorOccured(e)}},r}return __extends(r,t),r}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(e,n,o){var s=r.call(this)||this;s.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},s.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.In],"readwrite"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.In),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},s.executeOrLogic=function(){var e=this;new t.Select.Instance({From:this.Query.In,Where:this.Query.Where},function(t){var r=e.getPrimaryKey(e.Query.In),n=[],o={};t.forEach(function(e){n.push(e[r])}),o[r]={In:n},e.createtransactionForOrLogic({In:e.Query.In,Where:o,Set:e.Query.Set})},this.OnError)};try{if(s.OnSuccess=n,s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e;var u=s,i=function(){u.Transaction=t.DbConnection.transaction([e.In],"readwrite"),u.ObjectStore=u.Transaction.objectStore(e.In),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};e.Where?e.Where.Or?s.executeOrLogic():(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(n,r),n.prototype.checkSchema=function(t,r){if(t){var n=this.getTable(r),o=this;if(n){var s=function(t,r){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,r)};n.Columns.every(function(r){if(o.ErrorOccured)return!1;if(r.Name in t){!function(t){if(r.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:r.Name}),r.DataType){var n=typeof t;if(n!=r.DataType)if("object"!=n)s(e.ErrorType.BadDataType,{ColumnName:r.Name});else{var o=["+","-","*","/"];for(var u in t){o.indexOf(u)<0&&s(e.ErrorType.BadDataType,{ColumnName:r.Name});break}}}}(t[r.Name])}return!0})}else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r});e.throwError(u)}}else this.ErrorOccured=!0,this.OnSuccess(0)},n}(r.Where);r.Instance=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=r}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e,t=this,r=this.ObjectStore.openCursor();r.onsuccess=function(r){(e=r.target.result)&&(e.delete(),++t.RowAffected,e.continue())},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var r,n,o=this;this.ObjectStore.index(e);if(o.CheckFlag)for(var s=0,u=t.length;s=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},r.executeLikeLogic=function(e,t,r){var n,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&(n.delete(),++o.RowAffected),n.continue())}:this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&(n.delete(),++o.RowAffected),n.continue())}},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n,o,s=this;t=r?t[r]:t,o=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r)),s.CheckFlag?o.onsuccess=function(e){(n=e.target.result)&&(s.checkForWhereConditionMatch(n.value)&&(n.delete(),++s.RowAffected),n.continue())}:o.onsuccess=function(e){(n=e.target.result)&&(n.delete(),++s.RowAffected,n.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(n,o,s){var u=r.call(this)||this;u.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},u.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readwrite"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.OrInfo.OnSucess(this.RowAffected)}};try{var i=u;u.Query=n,u.OnSuccess=o,u.OnError=s,u.Transaction=t.DbConnection.transaction([n.From],"readwrite"),u.ObjectStore=u.Transaction.objectStore(n.From),u.Transaction.oncomplete=function(){i.onTransactionCompleted()},u.Transaction.onerror=function(e){i.onErrorOccured(e)},n.Where?(n.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:n.From})}return u}return __extends(n,r),n}(r.Where);r.Instance=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.prcoessExecutionOfCode=function(t){if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)switch(t.Name){case"create_db":case"open_db":this.RequestQueue.splice(0,0,t),e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode(),e.Status.ConStatus=e.ConnectionStatus.Connected;break;default:this.RequestQueue.push(t)}else this.RequestQueue.push(t),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode();e.EnableLog&&console.log("request pushed: "+t.Name)},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],r={Name:t.Name,Query:t.Query};e.EnableLog&&console.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(r):this.executeCodeDirect(r)}},this.executeCodeDirect=function(t){var r=this;new e.Business.Main(function(e){r.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var r=this.RequestQueue.shift();this.IsCodeExecuting=!1,r&&(e.EnableLog&&console.log("request finished : "+r.Name),t.ErrorOccured?r.OnError&&r.OnError(t.ErrorDetails):r.OnSuccess&&(null!=t.ReturnedValue?r.OnSuccess(t.ReturnedValue):r.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,e.Status.ConStatus==e.ConnectionStatus.NotStarted&&this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},t.executeCodeUsingWorker({Name:"change_log_status",Query:{logging:e.EnableLog}}),setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),e.Status.ConStatus==e.ConnectionStatus.Connected&&t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",r=e?e.toLowerCase():"jsstore",n=document.getElementsByTagName("script"),o=n.length-1,s="";o>=0;o--)if(s=n[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(r)>=0)return t=n[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function r(r){void 0===r&&(r=null);var n=t.call(this)||this;return n.openDb=function(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),this.prcoessExecutionOfCode({Name:"open_db",Query:e,OnSuccess:t,OnError:r}),this},n.createDb=function(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),this.prcoessExecutionOfCode({Name:"create_db",OnSuccess:t,OnError:r,Query:e}),this},n.dropDb=function(e,t){return void 0===t&&(t=null),this.prcoessExecutionOfCode({Name:"drop_db",OnSuccess:e,OnError:t}),this},n.select=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:r;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"select",Query:e,OnSuccess:n,OnError:o}),this},n.count=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:r;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"count",Query:e,OnSuccess:n,OnError:o}),this},n.insert=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:r;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"insert",Query:e,OnSuccess:n,OnError:o}),this},n.update=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:r;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"update",Query:e,OnSuccess:n,OnError:o}),this},n.delete=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:r;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"delete",Query:e,OnSuccess:n,OnError:o}),this},n.clear=function(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror}),this},n.bulkInsert=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=e.OnSuccess?e.OnSuccess:t,o=e.OnError?e.OnError:r;return e.OnSuccess=null,e.OnError=null,this.prcoessExecutionOfCode({Name:"bulk_insert",Query:e,OnSuccess:n,OnError:o}),this},n.exportJson=function(e){var t=e.OnError,r=e.OnSuccess;e.OnSuccess=e.OnError=void 0,this.prcoessExecutionOfCode({Name:"export_json",Query:e,OnSuccess:function(t){var n=document.createElement("a");n.href=t,n.download=e.From+".json",n.click(),r&&r()},OnError:t})},e.WorkerStatus==e.WebWorkerStatus.Registered?e.WorkerInstance.terminate():e.WorkerStatus==e.WebWorkerStatus.NotStarted&&KeyStore.init(),n.createWorker(),r&&n.openDb(r),n}return __extends(r,t),r}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self&&!self.alert&&(self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name: "+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)},JsStore.WorkerStatus=JsStore.WebWorkerStatus.Registered,KeyStore.init()); \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.6/JsStore-1.2.6.d.ts b/Dist/V 1.2/V 1.2.6/JsStore-1.2.6.d.ts deleted file mode 100644 index 4274205b..00000000 --- a/Dist/V 1.2/V 1.2.6/JsStore-1.2.6.d.ts +++ /dev/null @@ -1,1003 +0,0 @@ -/** JsStore.js - v1.2.6 - 14/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - IndexedDbUndefined = "indexeddb_undefined", - IndexedDbBlocked = "indexeddb_blocked", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - UnableToStart = "unable_to_start", - } - enum WhereQryOption { - In = "In", - Like = "Like", - Or = "Or", - } - enum DataType { - String = "string", - Object = "object", - Array = "array", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - GroupBy: any; - Aggregate: { - Max: any; - Min: any; - Count: any; - Sum: any; - Avg: any; - }; - IgnoreCase: boolean; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - IgnoreCase: boolean; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - IgnoreCase: boolean; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - IgnoreCase: boolean; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipDataCheck: any; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - interface IError { - Name: string; - Message: string; - } - interface IAggregate { - Max: Array; - Min: Array; - Sum: Array; - Count: Array; - Avg: Array; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus, TempResults: Array; - var throwError: (error: any) => never; - var getObjectFirstKey: (value: any) => string; -} -declare module JsStore { - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack?: Function) => void; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class BaseHelper { - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - protected getObjectSecondKey: (value: any) => string; - protected getPrimaryKey: (tableName: any) => any; - private getKeyPath; - protected sortNumberInAsc: (values: any) => any; - protected sortNumberInDesc: (values: any) => any; - protected sortAlphabetInAsc: (values: any) => any; - protected sortAlphabetInDesc: (values: any) => any; - private getCombination(word); - protected getAllCombinationOfWord(word: any, isArray: any): any[]; - } - } -} -declare module JsStore { - module Business { - class Base extends BaseHelper { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - SendResultFlag: Boolean; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected goToWhereLogic: () => void; - protected makeQryInCaseSensitive: (qry: any) => any; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - deleteDb: (name: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - class InsertHelper extends Base { - ValuesAffected: any[]; - Query: IInsert; - onTransactionCompleted: () => void; - protected checkModifyInsertValues: (table: any, values: any) => void; - } - } -} -declare module JsStore { - module Business { - class Insert extends InsertHelper { - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class BulkInsert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private bulkinsertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private changeLogStatus; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - bulkInsert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - exportJson: (query: ISelect, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - protected removeDuplicates: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class In extends NotWhere { - private executeSkipAndLimitForIn; - private executeSkipForIn; - private executeLimitForIn; - private executeSimpleForIn; - protected executeInLogic: (column: any, values: any) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class GroupByHelper extends Where { - constructor(); - private executeAggregateGroupBy; - protected processGroupBy: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Helper extends GroupByHelper { - processOrderBy: () => void; - private processAggregateQry; - constructor(); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Helper { - onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private orQuerySuccess; - private executeOrLogic; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - protected onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected pushApi: (request: IWebWorkerRequest, usePromise: boolean) => any; - private prcoessExecutionOfCode; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare var Promise: any; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - openDb: (dbName: string, onSuccess?: Function, onError?: Function) => any; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - createDb: (dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function) => any; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb: (onSuccess: Function, onError?: Function) => any; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select: (query: ISelect, onSuccess?: Function, onError?: Function) => any; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count: (query: ICount, onSuccess?: Function, onError?: Function) => any; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update: (query: IUpdate, onSuccess?: Function, onError?: Function) => any; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete: (query: IDelete, onSuccess?: Function, onError?: Function) => any; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear: (tableName: string, onSuccess?: Function, onError?: Function) => any; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - bulkInsert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - /** - * export the result in json file - * - * @param {ISelect} qry - * @memberof Instance - */ - exportJson: (query: ISelect) => any; - } -} -export = JsStore; diff --git a/Dist/V 1.2/V 1.2.6/JsStore-1.2.6.js b/Dist/V 1.2/V 1.2.6/JsStore-1.2.6.js deleted file mode 100644 index 6c433e53..00000000 --- a/Dist/V 1.2/V 1.2.6/JsStore-1.2.6.js +++ /dev/null @@ -1,4880 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.2.6 - 14/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var KeyStore; -(function (KeyStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbUndefined - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = /** @class */ (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = /** @class */ (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = /** @class */ (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = /** @class */ (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbBlocked, - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - ErrorType["IndexedDbUndefined"] = "indexeddb_undefined"; - ErrorType["IndexedDbBlocked"] = "indexeddb_blocked"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["UnableToStart"] = "unable_to_start"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); - var WhereQryOption; - (function (WhereQryOption) { - WhereQryOption["In"] = "In"; - WhereQryOption["Like"] = "Like"; - WhereQryOption["Or"] = "Or"; - })(WhereQryOption = JsStore.WhereQryOption || (JsStore.WhereQryOption = {})); - var DataType; - (function (DataType) { - DataType["String"] = "string"; - DataType["Object"] = "object"; - DataType["Array"] = "array"; - })(DataType = JsStore.DataType || (JsStore.DataType = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }, JsStore.TempResults = []; - JsStore.throwError = function (error) { - throw error; - }; - JsStore.getObjectFirstKey = function (value) { - for (var key in value) { - return key; - } - return null; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (errCallBack === void 0) { errCallBack = null; } - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { - var DbName; - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - else { - if (errCallBack) { - var Error = { - Name: JsStore.Status.LastError, - Message: '' - }; - switch (Error.Name) { - case JsStore.ErrorType.IndexedDbBlocked: - Error.Message = "IndexedDB is blocked"; - break; - case JsStore.ErrorType.IndexedDbUndefined: - Error.Message = "IndexedDB is not supported"; - break; - } - errCallBack(Error); - } - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = /** @class */ (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = /** @class */ (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = /** @class */ (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var BaseHelper = /** @class */ (function () { - function BaseHelper() { - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - this.getObjectSecondKey = function (value) { - var IsSecond = false; - for (var key in value) { - if (IsSecond) { - return key; - } - else { - IsSecond = true; - } - } - }; - this.getPrimaryKey = function (tableName) { - var PrimaryKey = this.getTable(tableName).PrimaryKey; - return PrimaryKey ? PrimaryKey : this.getKeyPath(); - }; - this.getKeyPath = function (tableName) { - var Transaction = Business.DbConnection.transaction([tableName], "readonly"), ObjectStore = Transaction.objectStore(tableName); - return ObjectStore.keyPath; - }; - this.sortNumberInAsc = function (values) { - values.sort(function (a, b) { - return a - b; - }); - return values; - }; - this.sortNumberInDesc = function (values) { - values.sort(function (a, b) { - return b - a; - }); - return values; - }; - this.sortAlphabetInAsc = function (values) { - values.sort(function (a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); - return values; - }; - this.sortAlphabetInDesc = function (values) { - values.sort(function (a, b) { - return b.toLowerCase().localeCompare(a.toLowerCase()); - }); - return values; - }; - } - BaseHelper.prototype.getCombination = function (word) { - var Results = [], doAndPushCombination = function (word, chars, index) { - if (index == word.length) { - Results.push(chars.join("")); - } - else { - var ch = word.charAt(index); - chars[index] = ch.toLowerCase(); - doAndPushCombination(word, chars, index + 1); - chars[index] = ch.toUpperCase(); - doAndPushCombination(word, chars, index + 1); - } - }; - doAndPushCombination(word, [], 0); - return Results; - }; - BaseHelper.prototype.getAllCombinationOfWord = function (word, isArray) { - if (isArray) { - var Results = []; - for (var i = 0, length = word.length; i < length; i++) { - Results = Results.concat(this.getCombination(word[i])); - } - return Results; - } - else { - return this.getCombination(word); - } - }; - return BaseHelper; - }()); - Business.BaseHelper = BaseHelper; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function (_super) { - __extends(Base, _super); - function Base() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ErrorOccured = false; - _this.ErrorCount = 0; - _this.RowAffected = 0; - _this.SendResultFlag = true; - _this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - _this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - _this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - _this.goToWhereLogic = function () { - var Column = JsStore.getObjectFirstKey(this.Query.Where); - if (this.Query.IgnoreCase === true) { - this.Query.Where = this.makeQryInCaseSensitive(this.Query.Where); - } - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1); - var Key = JsStore.getObjectFirstKey(Value); - switch (Key) { - case 'Like': - { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - ; - break; - case 'In': - this.executeInLogic(Column, Value['In']); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - this.executeWhereLogic(Column, Value, Key); - break; - case 'Aggregate': break; - default: this.executeWhereLogic(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1); - this.executeWhereLogic(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - }; - _this.makeQryInCaseSensitive = function (qry) { - var Results = [], Qry; - for (var item in qry) { - Qry = qry[item]; - switch (item) { - case JsStore.WhereQryOption.In: - for (var value in Qry) { - Results = Results.concat(this.getAllCombinationOfWord(Qry['In'], true)); - } - break; - case JsStore.WhereQryOption.Like: break; - default: - Results = Results.concat(this.getAllCombinationOfWord(Qry)); - } - qry[item] = { - In: Results - }; - Results = []; - } - return qry; - }; - return _this; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - switch (CompSymbol) { - case JsStore.Occurence.Any: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - SymbolIndex = value.lastIndexOf(CompValue.toLowerCase()); - if (SymbolIndex < value.length - CompValue.length) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (value <= CompareValue) { - Status = false; - } - ; - break; - //less than - case '<': - if (value >= CompareValue) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - if (typeof ColumnValue == 'object') { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - else { - var CompareValue = rowValue[Column]; - if (ColumnValue != CompareValue) { - Status = false; - break; - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }(Business.BaseHelper)); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = /** @class */ (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = /** @class */ (function () { - function DropDb(name, onSuccess, onError) { - this.deleteDb = function (name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("database is blocked, cant be deleted right now."); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - onSuccess(); - }; - }; - var That = this; - Business.DbConnection.close(); - setTimeout(function () { - That.deleteDb(name, onSuccess, onError); - }, 100); - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var InsertHelper = /** @class */ (function (_super) { - __extends(InsertHelper, _super); - function InsertHelper() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ValuesAffected = []; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.checkModifyInsertValues = function (table, values) { - var That = this, ValueIndex = 0, Value, TableName = table.Name, checkDatas = function () { - Value = values[ValueIndex++]; - checkInternal(); - }, checkInternal = function () { - if (Value) { - checkAndModifyValue(); - } - else { - That.insertData(values); - } - }, checkAndModifyValue = function () { - var Index = 0, checkAndModifyColumn = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(Value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof Value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyColumn(table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - Value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && Value[column.Name] == null) { - Value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - That.onErrorOccured(That.Error, true); - } - } - else { - checkDatas(); - } - }; - checkAndModifyColumn(table.Columns[Index++]); - }; - checkDatas(); - }; - return _this; - } - return InsertHelper; - }(Business.Base)); - Business.InsertHelper = InsertHelper; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = /** @class */ (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.insertData = function (values) { - var That = this, ValueIndex = 0, IsReturn = this.Query.Return, insertDataintoTable; - if (IsReturn) { - insertDataintoTable = function (value) { - if (value) { - var AddResult = ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - That.ValuesAffected.push(value); - insertDataintoTable(values[ValueIndex++]); - }; - } - }; - } - else { - insertDataintoTable = function (value) { - if (value) { - var AddResult = ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - ++That.RowAffected; - insertDataintoTable(values[ValueIndex++]); - }; - } - }; - } - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - var ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(values[ValueIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var Table = _this.getTable(query.Into); - if (Table) { - if (_this.Query.SkipDataCheck) { - _this.insertData(_this.Query.Values); - //remove values - _this.Query.Values = undefined; - } - else { - _this.checkModifyInsertValues(Table, _this.Query.Values); - //remove values - _this.Query.Values = undefined; - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - return Insert; - }(Business.InsertHelper)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var BulkInsert = /** @class */ (function (_super) { - __extends(BulkInsert, _super); - function BulkInsert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.bulkinsertData = function () { - var That = this; - this.Transaction = Business.DbConnection.transaction([this.Query.Into], "readwrite"); - this.ObjectStore = this.Transaction.objectStore(this.Query.Into); - this.Transaction.oncomplete = function (e) { - That.OnSuccess(); - }; - this.Query.Values.forEach(function (value) { - That.ObjectStore.add(value); - }); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - _this.bulkinsertData(); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - return BulkInsert; - }(Business.Base)); - Business.BulkInsert = BulkInsert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = /** @class */ (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = /** @class */ (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value"); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - switch (request.Name) { - case 'create_db': - case 'open_db': - this.executeLogic(request); - break; - case 'change_log_status': - this.changeLogStatus(request); - default: - switch (JsStore.Status.ConStatus) { - case JsStore.ConnectionStatus.Connected: - { - this.executeLogic(request); - } - ; - break; - case JsStore.ConnectionStatus.Closed: - { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - ; - break; - } - } - }; - this.changeLogStatus = function (request) { - if (request.Query['logging'] === true) { - JsStore.EnableLog = true; - } - else { - JsStore.EnableLog = false; - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'bulk_insert': - this.bulkInsert(request.Query, OnSuccess, OnError); - break; - case 'export_json': - this.exportJson(request.Query, OnSuccess, OnError); - break; - default: console.error('The Api:-' + request.Name + 'does not support'); - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.bulkInsert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.BulkInsert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.exportJson = function (query, onSuccess, onError) { - this.select(query, function (results) { - var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], { - type: "text/json" - })); - onSuccess(Url); - }, function (err) { - onError(err); - }); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = /** @class */ (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.Sorted = false; - _this.CheckFlag = false; - _this.removeDuplicates = function () { - var Datas = this.Results; - //free results memory - this.Results = undefined; - var Key = this.getPrimaryKey(this.Query.From); - var lookupObject = {}; - for (var i in Datas) { - lookupObject[Datas[i][Key]] = Datas[i]; - } - //free datas memory - Datas = []; - for (i in lookupObject) { - Datas.push(lookupObject[i]); - } - this.Results = Datas; - }; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeSkipAndLimitForIn = function (column, values) { - var Cursor, Skip = this.SkipRecord, That = this, ColumnStore = this.ObjectStore.index(column), skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - skipOrPush(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeSkipForIn = function (column, values) { - var Cursor, Skip = this.SkipRecord, That = this, ColumnStore = this.ObjectStore.index(column), skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - skipOrPush((Cursor.value)); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeLimitForIn = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column); - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeSimpleForIn = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column); - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeInLogic = function (column, values) { - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimitForIn(column, values); - } - else if (this.SkipRecord) { - this.executeSkipForIn(column, values); - } - else if (this.LimitRecord) { - this.executeLimitForIn(column, values); - } - else { - this.executeSimpleForIn(column, values); - } - }; - return _this; - } - return In; - }(Select.NotWhere)); - Select.In = In; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSkip = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLimit = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSimple = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.In)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest, Cursor, executeSkipAndLimit = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeSkip = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeLimit = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }, executeSimple = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = /** @class */ (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var GroupByHelper = /** @class */ (function (_super) { - __extends(GroupByHelper, _super); - function GroupByHelper() { - var _this = _super.call(this) || this; - _this.executeAggregateGroupBy = function () { - var GrpQry = this.Query.GroupBy, Datas = this.Results, LookUpObj = {}; - //free results memory - this.Results = undefined; - //assign aggregate and free aggregate memory - var AggregateQry = this.Query.Aggregate; - this.Query.Aggregate = undefined; - var Index, ObjKey, Value, AggrColumn; - var calculateAggregate = function () { - for (var prop in AggregateQry) { - switch (prop) { - case 'Count': - var getCount = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Count(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? 1 : 0; - return Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Count(" + AggrColumn + ")"] = getCount(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Count(" + AggrColumn + ")"] = getCount(); - } - } - break; - case 'Max': - var getMax = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Max(" + AggrColumn + ")"] : 0; - Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - //compare between old value and new value - return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn]; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Max(" + AggrColumn + ")"] = getMax(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Max(" + AggrColumn + ")"] = getMax(); - } - } - break; - case 'Min': - var getMin = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Min(" + AggrColumn + ")"] : Infinity; - Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity; - //compare between old value and new value - return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn]; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Min(" + AggrColumn + ")"] = getMin(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Min(" + AggrColumn + ")"] = getMin(); - } - } - break; - case 'Sum': - var getSum = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Sum(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - return Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Sum(" + AggrColumn + ")"] = getSum(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Sum(" + AggrColumn + ")"] = getSum(); - } - } - break; - case 'Avg': - var getAvg = function () { - Value = LookUpObj[ObjKey]; - //get old sum value - var Sum = Value ? Value["Sum(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - Datas[Index]["Sum(" + AggrColumn + ")"] = Sum; - //get old count value - Value = Value ? Value["Count(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? 1 : 0; - Datas[Index]["Count(" + AggrColumn + ")"] = Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - getAvg(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - getAvg(); - } - } - break; - } - } - }; - if (typeof GrpQry == 'string') { - for (Index in Datas) { - ObjKey = Datas[Index][GrpQry]; - calculateAggregate(); - LookUpObj[ObjKey] = Datas[Index]; - } - } - else { - for (Index in Datas) { - ObjKey = ""; - for (var column in GrpQry) { - ObjKey += Datas[Index][GrpQry[column]]; - } - calculateAggregate(); - LookUpObj[ObjKey] = Datas[Index]; - } - } - //free datas memory - Datas = []; - for (var i in LookUpObj) { - Datas.push(LookUpObj[i]); - } - //Checking for avg and if exist then fill the datas; - if (AggregateQry.Avg) { - if (typeof AggregateQry.Avg == 'string') { - for (Index in Datas) { - var Sum = Datas[Index]["Sum(" + AggregateQry.Avg + ")"], Count = Datas[Index]["Count(" + AggregateQry.Avg + ")"]; - Datas[Index]["Avg(" + AggregateQry.Avg + ")"] = Sum / Count; - if (AggregateQry.Count !== AggregateQry.Avg) { - delete Datas[Index]["Count(" + AggregateQry.Avg + ")"]; - } - if (AggregateQry.Sum !== AggregateQry.Avg) { - delete Datas[Index]["Sum(" + AggregateQry.Avg + ")"]; - } - } - } - else { - var IsCountTypeString = typeof AggregateQry.Count, IsSumTypeString = typeof AggregateQry.Count; - for (Index in Datas) { - for (var column in AggregateQry.Avg) { - var AvgColumn = AggregateQry.Avg[column], Sum = Datas[Index]["Sum(" + AvgColumn + ")"], Count = Datas[Index]["Count(" + AvgColumn + ")"]; - Datas[Index]["Avg(" + AvgColumn + ")"] = Sum / Count; - if (IsCountTypeString) { - if (AggregateQry.Count !== AvgColumn) { - delete Datas[Index]["Count(" + AvgColumn + ")"]; - } - else if (AggregateQry.Count.indexOf(AvgColumn) == -1) { - delete Datas[Index]["Count(" + AvgColumn + ")"]; - } - } - if (IsSumTypeString) { - if (AggregateQry.Sum !== AvgColumn) { - delete Datas[Index]["Sum(" + AvgColumn + ")"]; - } - else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) { - delete Datas[Index]["Sum(" + AvgColumn + ")"]; - } - } - } - } - } - } - this.Results = Datas; - }; - _this.processGroupBy = function () { - var GrpQry = this.Query.GroupBy, Datas = this.Results, LookUpObj = {}; - //free results memory - this.Results = this.Query.GroupBy = undefined; - if (typeof GrpQry == 'string') { - for (var i in Datas) { - LookUpObj[Datas[i][GrpQry]] = Datas[i]; - } - } - else { - var ObjKey; - for (var i in Datas) { - ObjKey = ""; - for (var column in GrpQry) { - ObjKey += Datas[i][GrpQry[column]]; - } - LookUpObj[ObjKey] = Datas[i]; - } - } - //free datas memory - Datas = []; - for (i in LookUpObj) { - Datas.push(LookUpObj[i]); - } - this.Results = Datas; - }; - return _this; - } - return GroupByHelper; - }(Select.Where)); - Select.GroupByHelper = GroupByHelper; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Helper = /** @class */ (function (_super) { - __extends(Helper, _super); - function Helper() { - var _this = _super.call(this) || this; - _this.processOrderBy = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - } - }; - _this.processAggregateQry = function () { - var Datas = this.Results, Results = {}, Key; - //free results memory - this.Results = undefined; - for (var prop in this.Query.Aggregate) { - switch (prop) { - case 'Count': - var getCount = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key] ? 1 : 0; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Count(" + Key + ")"] = getCount(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Count(" + Key + ")"] = getCount(); - } - } - break; - case 'Max': - var getMax = function () { - var Result = 0; - for (var i in Datas) { - Result = Result > Datas[i][Key] ? Result : Datas[i][Key]; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Max(" + Key + ")"] = getMax(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Max(" + Key + ")"] = getMax(); - } - } - break; - case 'Min': - var getMin = function () { - var Result = Infinity, Value = Infinity; - for (var i in Datas) { - Value = Datas[i][Key] ? Datas[i][Key] : Infinity; - Result = Result < Value ? Result : Value; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Min(" + Key + ")"] = getMin(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Min(" + Key + ")"] = getMin(); - } - } - break; - case 'Sum': - var getSum = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key]; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Sum(" + Key + ")"] = getSum(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Sum(" + Key + ")"] = getSum(); - } - } - break; - case 'Avg': - var getAvg = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key]; - } - ; - return Result / Datas.length; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Avg(" + Key + ")"] = getAvg(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Avg(" + Key + ")"] = getAvg(); - } - } - break; - } - } - //add results to the first index of result - for (var prop in Results) { - Datas[0][prop] = Results[prop]; - } - this.Results = Datas; - }; - return _this; - } - return Helper; - }(Select.GroupByHelper)); - Select.Helper = Helper; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.processOrderBy(); - if (this.Query.GroupBy) { - if (this.Query.Aggregate) { - this.executeAggregateGroupBy(); - } - else { - this.processGroupBy(); - } - } - else if (this.Query.Aggregate) { - this.processAggregateQry(); - } - this.OnSuccess(this.Results); - } - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.orQuerySuccess = function () { - this.Results = this.OrInfo.Results; - //free var memory - this.OrInfo.Results = undefined; - this.removeDuplicates(); - this.OrInfo.OnSucess(this.Results); - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess, - Results: [] - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - this.OrInfo.Results = this.OrInfo.Results.concat(this.Results); - if (!this.Query.Limit || (this.Query.Limit > this.OrInfo.Results.length)) { - this.Results = []; - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.orQuerySuccess(); - } - } - else { - this.orQuerySuccess(); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Helper)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = /** @class */ (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column), CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - if (this.ObjectStore.count) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.count(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - That.ResultCount += e.target.result; - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Count.NotWhere)); - Count.In = In; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Count.In)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (That.CheckFlag) { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - That.ObjectStore = That.Transaction.objectStore(query.From); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where != undefined) { - if (query.Where.Or) { - new Business.Select.Instance(query, function (results) { - That.ResultCount = results.length; - That.onTransactionCompleted(); - }, _this.OnError); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = /** @class */ (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column), CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Update.NotWhere)); - Update.In = In; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Update.In)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.In); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - var That = this; - new Business.Select.Instance({ - From: this.Query.In, - Where: this.Query.Where - }, function (results) { - var Key = That.getPrimaryKey(That.Query.In), InQuery = [], WhereQry = {}; - results.forEach(function (value) { - InQuery.push(value[Key]); - }); - WhereQry[Key] = { In: InQuery }; - That.createtransactionForOrLogic({ - In: That.Query.In, - Where: WhereQry, - Set: That.Query.Set - }); - }, this.OnError); - }; - try { - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - var That = _this; - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(query.In); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - if (suppliedValue) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - } - else { - this.ErrorOccured = true; - //execute onSuccess with supplying 0 as rows affected - this.OnSuccess(0); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = /** @class */ (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column), CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Delete.NotWhere)); - Delete.In = In; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this, Cursor; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Delete.In)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.OrInfo.OnSucess(this.RowAffected); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = /** @class */ (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.pushApi = function (request, usePromise) { - if (usePromise === true) { - var That = this; - return new Promise(function (resolve, reject) { - request.OnSuccess = function (result) { - resolve(result); - }; - request.OnError = function (error) { - reject(error); - }; - That.prcoessExecutionOfCode(request); - }); - } - else { - this.prcoessExecutionOfCode(request); - return this; - } - }; - this.prcoessExecutionOfCode = function (request) { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - switch (request.Name) { - case 'create_db': - case 'open_db': - this.RequestQueue.splice(0, 0, request); - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - ; - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - break; - default: this.RequestQueue.push(request); - } - } - else { - this.RequestQueue.push(request); - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - } - if (JsStore.EnableLog) { - console.log("request pushed: " + request.Name); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - if (JsStore.EnableLog) { - console.log("request executing : " + FirstRequest.Name); - } - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - this.executeCode(); - } - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - That.executeCodeUsingWorker({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - That.executeCode(); - } - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.openDb = function (dbName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - return this.pushApi({ - Name: 'open_db', - Query: dbName, - OnSuccess: onSuccess, - OnError: onError, - }, false); - }; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - return this.pushApi({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }, false); - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - _this.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onSuccess = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'select', - Query: query, - OnSuccess: onSuccess, - OnError: onSuccess - }, UsePromise); - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'count', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'insert', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'update', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - _this.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'delete', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var UsePromise = onSuccess ? false : true; - return this.prcoessExecutionOfCode({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }, UsePromise); - }; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.bulkInsert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - var UsePromise = onSuccess ? false : true; - query.OnSuccess = query.OnError = null; - return this.pushApi({ - Name: 'bulk_insert', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * export the result in json file - * - * @param {ISelect} qry - * @memberof Instance - */ - _this.exportJson = function (query) { - var OnSuccess = function (url) { - var Link = document.createElement("a"); - Link.href = url; - Link.download = query.From + ".json"; - Link.click(); - if (OnSuccessCallBack) { - OnSuccessCallBack(); - } - }, OnError = query['OnError'], OnSuccessCallBack = query['OnSuccess']; - query['OnSuccess'] = query['OnError'] = undefined; - var UsePromise = OnSuccessCallBack ? false : true; - if (UsePromise) { - return new Promise(function (resolve, reject) { - this.pushApi({ - Name: 'export_json', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }, UsePromise).then(function (url) { - OnSuccess(url); - resolve(); - }).catch(function (err) { - reject(err); - }); - }); - } - else { - this.pushApi({ - Name: 'export_json', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }, UsePromise); - } - }; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - JsStore.WorkerInstance.terminate(); - } - else if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - KeyStore.init(); - } - _this.createWorker(); - if (dbName) { - _this.openDb(dbName); - } - return _this; - } - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -if (self && !self.alert) { - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name: " + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - KeyStore.init(); -} -//# sourceMappingURL=JsStore-1.2.6.js.map \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.6/JsStore-1.2.6.js.map b/Dist/V 1.2/V 1.2.6/JsStore-1.2.6.js.map deleted file mode 100644 index c0b63c9c..00000000 --- a/Dist/V 1.2/V 1.2.6/JsStore-1.2.6.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.2.6.js","sourceRoot":"","sources":["../License.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../JsStore/enums.ts","../JsStore/interfaces.ts","../JsStore/CommonLogic.ts","../JsStore/UtilsLogic.ts","../JsStore/HelperLogic.ts","../JsStore/Model/Column.ts","../JsStore/Model/Table.ts","../JsStore/Model/DataBase.ts","../JsStore/Business/BaseHelperLogic.ts","../JsStore/Business/BaseLogic.ts","../JsStore/Business/CreateDbLogic.ts","../JsStore/Business/DropDbLogic.ts","../JsStore/Business/InsertHelperLogic.ts","../JsStore/Business/InsertLogic.ts","../JsStore/Business/BulkInsertLogic.ts","../JsStore/Business/OpenDbLogic.ts","../JsStore/Business/ClearLogic.ts","../JsStore/Business/MainLogic.ts","../JsStore/Business/Select/BaseSelectLogic.ts","../JsStore/Business/Select/NotWhereLogic.ts","../JsStore/Business/Select/InLogic.ts","../JsStore/Business/Select/LikeLogic.ts","../JsStore/Business/Select/WhereLogic.ts","../JsStore/Business/Select/JoinLogic.ts","../JsStore/Business/Select/GroupByHelperLogic.ts","../JsStore/Business/Select/HelperLogic.ts","../JsStore/Business/Select/InstanceLogic.ts","../JsStore/Business/Count/BaseCountLogic.ts","../JsStore/Business/Count/NotWhereLogic.ts","../JsStore/Business/Count/InLogic.ts","../JsStore/Business/Count/LikeLogic.ts","../JsStore/Business/Count/WhereLogic.ts","../JsStore/Business/Count/InstanceLogic.ts","../JsStore/Business/Update/BaseUpdateLogic.ts","../JsStore/Business/Update/NotWhereLogic.ts","../JsStore/Business/Update/InLogic.ts","../JsStore/Business/Update/LikeLogic.ts","../JsStore/Business/Update/WhereLogic.ts","../JsStore/Business/Update/InstanceLogic.ts","../JsStore/Business/Delete/BaseDeleteLogic.ts","../JsStore/Business/Delete/NotWhereLogic.ts","../JsStore/Business/Delete/InLogic.ts","../JsStore/Business/Delete/LikeLogic.ts","../JsStore/Business/Delete/WhereLogic.ts","../JsStore/Business/Delete/InstanceLogic.ts","../JsStore/CodeExecutionHelper.ts","../JsStore/JsStoreInstance.ts","../JsStore/DirectCode.ts"],"names":[],"mappings":";;;;;;;;;;AAAA;;oDAEoD;ACFpD,IAAO,QAAQ,CA8Bd;AA9BD,WAAO,QAAQ;IAKX;QAAA;QAwBA,CAAC;QAvBG;;;;;WAKG;QACI,eAAS,GAAG;YACd,IAAY,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAK,IAAY,CAAC,YAAY,IAAK,IAAY,CAAC,eAAe,IAAK,IAAY,CAAC,WAAW,CAAC;YACrI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACX,IAAY,CAAC,cAAc,GAAI,IAAY,CAAC,cAAc,IAAK,IAAY,CAAC,oBAAoB,IAAK,IAAY,CAAC,gBAAgB,CAAC;gBACnI,IAAY,CAAC,WAAW,GAAI,IAAY,CAAC,WAAW,IAAK,IAAY,CAAC,iBAAiB,IAAK,IAAY,CAAC,aAAa,CAAA;YAC3H,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC5B,IAAY,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,CAAC,CAAC;gBACF,OAAO,CAAC,MAAM,GAAG;oBACb,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,aAAa;oBACjD,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,kBAAkB;iBAClD,CAAA;YACL,CAAC;QACL,CAAC,CAAA;QACL,YAAC;KAAA,AAxBD,IAwBC;IAxBY,cAAK,QAwBjB,CAAA;AACL,CAAC,EA9BM,QAAQ,KAAR,QAAQ,QA8Bd;AC9BD,IAAO,QAAQ,CAgDd;AAhDD,WAAO,QAAQ;IAYX,IAAY,gBAIX;IAJD,WAAY,gBAAgB;QACxB,2CAAuB,CAAA;QACvB,qCAAiB,CAAA;QACjB,gDAA4B,CAAA;IAChC,CAAC,EAJW,gBAAgB,GAAhB,yBAAgB,KAAhB,yBAAgB,QAI3B;IA4BU,qBAAY,GAA6B,EAAE,EAClD,kBAAS,GAAG,YAAY,EACxB,wBAAe,GAAG,KAAK,CAAC;AAEhC,CAAC,EAhDM,QAAQ,KAAR,QAAQ,QAgDd;AChDD,IAAO,QAAQ,CAkDd;AAlDD,WAAO,QAAQ;IACA,+BAAsB,GAAG,UAAU,OAA0B;QACpE,SAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,EAAE,CAAC,CAAC,SAAA,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,SAAA,WAAW,EAAE,CAAC;QAClB,CAAC;IACL,CAAC,CAAA;IAEU,oBAAW,GAAG;QACrB,EAAE,CAAC,CAAC,CAAC,SAAA,eAAe,IAAI,SAAA,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9C,SAAA,eAAe,GAAG,IAAI,CAAC;YACvB,IAAI,OAAO,GAAsB;gBAC7B,IAAI,EAAE,SAAA,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC1B,KAAK,EAAE,SAAA,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;aAC/B,CAAA;YACD,SAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC,CAAA;IAEU,0BAAiB,GAAG,UAAU,OAA0B;QAC/D,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,SAAA,QAAQ,CAAC,IAAI,CAAC,UAAU,OAAO;YAC/B,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC,CAAA;IAEU,+BAAsB,GAAG,UAAU,OAAyB;QACnE,IAAI,eAAe,GAAsB,SAAA,YAAY,CAAC,KAAK,EAAE,CAAC;QAC9D,SAAA,eAAe,GAAG,KAAK,CAAC;QACxB,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC1B,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,CAAC,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACtC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,CAAC;YACF,EAAE,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC5B,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC;oBAChC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACrD,CAAC;gBACD,IAAI,CAAC,CAAC;oBACF,eAAe,CAAC,SAAS,EAAE,CAAC;gBAChC,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC,CAAA;AAEL,CAAC,EAlDM,QAAQ,KAAR,QAAQ,QAkDd;AClDD,IAAO,QAAQ,CAsBd;AAtBD,WAAO,QAAQ;IACX,IAAc,QAAQ,CAoBrB;IApBD,WAAc,QAAQ;QAClB;YAAA;gBACI,YAAO,GAAG,IAAI,CAAC;gBAGf,iBAAY,GAAY,KAAK,CAAC;gBAC9B,eAAU,GAAG,CAAC,CAAC;gBAIL,mBAAc,GAAG,UAAU,CAAC;oBAClC,EAAE,IAAI,CAAC,UAAU,CAAC;oBAClB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;wBACvB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;4BACvB,IAAI,CAAC,OAAO,CAAE,CAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC1C,CAAC;oBACL,CAAC;oBACD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC,CAAA;YACL,CAAC;YAAD,WAAC;QAAD,CAAC,AAlBD,IAkBC;QAlBY,aAAI,OAkBhB,CAAA;IACL,CAAC,EApBa,QAAQ,GAAR,iBAAQ,KAAR,iBAAQ,QAoBrB;AACL,CAAC,EAtBM,QAAQ,KAAR,QAAQ,QAsBd;ACtBD,IAAO,QAAQ,CA8Cd;AA9CD,WAAO,QAAQ;IACX,IAAc,QAAQ,CA4CrB;IA5CD,WAAc,QAAQ;QAClB;YAAyB,uBAAI;YA0BzB,aAAY,KAAc,EAAE,SAAmB,EAAE,OAAiB;gBAAlE,YACI,iBAAO,SAaV;gBArCO,SAAG,GAAG;oBACV,IAAI,IAAI,GAAQ,IAAI,EAChB,OAAO,GAAG,UAAU,MAAM,EAAE,KAAK;wBAC7B,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC3F,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;wBACD,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;4BACrC,IAAI,MAAM,GAA6B,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;4BACxD,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gCACT,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;4BACzC,CAAC;wBACL,CAAC,CAAA;oBACL,CAAC,CAAA;oBAEL,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;wBAClC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC1C,KAAK,CAAC;oBACV,CAAC;gBAEL,CAAC,CAAA;gBAIG,IAAI,IAAI,GAAG,KAAI,CAAC;gBAChB,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,KAAI,CAAC,WAAW,GAAG,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;gBACtE,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5D,KAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;oBACrC,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC;wBACpB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC5B,CAAC;gBACL,CAAC,CAAA;gBACD,KAAI,CAAC,GAAG,EAAE,CAAC;;YAEf,CAAC;YAEL,UAAC;QAAD,CAAC,AA1CD,CAAyB,SAAA,IAAI,GA0C5B;QA1CY,YAAG,MA0Cf,CAAA;IACL,CAAC,EA5Ca,QAAQ,GAAR,iBAAQ,KAAR,iBAAQ,QA4CrB;AACL,CAAC,EA9CM,QAAQ,KAAR,QAAQ,QA8Cd;AC9CD,IAAO,QAAQ,CAwDd;AAxDD,WAAO,QAAQ;IACX,IAAc,QAAQ,CAsDrB;IAtDD,WAAc,QAAQ;QAClB;YAAyB,uBAAI;YAiCzB,aAAY,KAAc,EAAE,SAAmB,EAAE,OAAiB;gBAAlE,YACI,iBAAO,SAgBV;gBAhDO,aAAO,GAAG,UAAU,KAAK;oBAC7B,IAAI,IAAI,GAAQ,IAAI,EAChB,uBAAuB,GAAG;wBACtB,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACjG,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;4BACrC,IAAI,MAAM,GAA6B,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;4BACxD,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gCACT,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;gCACvC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BAChC,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,UAAU,EAAE,CAAC;4BACjB,CAAC;wBACL,CAAC,CAAA;wBAED,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;oBAEL,CAAC,EACD,UAAU,GAAG;wBACT,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC5C,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC;4BAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;oBACL,CAAC,CAAA;oBACL,uBAAuB,EAAE,CAAC;gBAC9B,CAAC,CAAA;gBAIG,IAAI,CAAC;oBACD,IAAI,IAAI,GAAG,KAAI,CAAC;oBAChB,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;oBACvB,KAAI,CAAC,WAAW,GAAG,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;oBAC5E,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBACjE,KAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;wBACrC,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC;4BACpB,SAAS,EAAE,CAAC;wBAChB,CAAC;oBACL,CAAC,CAAC;oBACF,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5B,CAAC;gBACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACR,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACtB,CAAC;;YACL,CAAC;YAEL,UAAC;QAAD,CAAC,AApDD,CAAyB,SAAA,IAAI,GAoD5B;QApDY,YAAG,MAoDf,CAAA;IACL,CAAC,EAtDa,QAAQ,GAAR,iBAAQ,KAAR,iBAAQ,QAsDrB;AACL,CAAC,EAxDM,QAAQ,KAAR,QAAQ,QAwDd;ACxDD,IAAO,QAAQ,CAwDd;AAxDD,WAAO,QAAQ;IACX,IAAc,QAAQ,CAsDrB;IAtDD,WAAc,QAAQ;QAClB;YAA4B,0BAAI;YAgC5B,gBAAY,KAAc,EAAE,SAAmB,EAAE,OAAiB;gBAAlE,YACI,iBAAO,SAiBV;gBAhDD,iBAAW,GAAW,CAAC,CAAC;gBAChB,YAAM,GAAG;oBACb,IAAI,IAAI,GAAG,IAAI,EACX,UAAU,GAAG,UAAU,MAAM,EAAE,KAAK;wBAEhC,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC3F,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAC;wBACF,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;4BACrC,IAAI,MAAM,GAA6B,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;4BACxD,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gCACT,MAAM,CAAC,MAAM,EAAE,CAAC;gCAChB,EAAE,IAAI,CAAC,WAAW,CAAC;gCACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;4BACtB,CAAC;wBAEL,CAAC,CAAA;oBAEL,CAAC,CAAA;oBAEL,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;wBAClC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;4BACrB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;wBACjD,CAAC;wBACD,KAAK,CAAC;oBACV,CAAC;gBACL,CAAC,CAAA;gBAIG,IAAI,IAAI,GAAG,KAAI,CAAC;gBAChB,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,KAAI,CAAC,WAAW,GAAG,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;gBACvE,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE5D,KAAI,CAAC,WAAW,CAAC,UAAU,GAAG;oBAC1B,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC;wBACpB,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAChC,CAAC;gBACL,CAAC,CAAA;gBACD,KAAI,CAAC,WAAW,CAAC,OAAO,GAAG,UAAU,CAAC;oBAClC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC3B,CAAC,CAAA;gBAED,KAAI,CAAC,MAAM,EAAE,CAAC;;YAClB,CAAC;YAEL,aAAC;QAAD,CAAC,AApDD,CAA4B,SAAA,IAAI,GAoD/B;QApDY,eAAM,SAoDlB,CAAA;IACL,CAAC,EAtDa,QAAQ,GAAR,iBAAQ,KAAR,iBAAQ,QAsDrB;AACL,CAAC,EAxDM,QAAQ,KAAR,QAAQ,QAwDd;ACxDD,IAAO,QAAQ,CAyDd;AAzDD,WAAO,QAAQ;IACX,IAAc,QAAQ,CAuDrB;IAvDD,WAAc,QAAQ;QAClB;YACI,gBAAY,MAAc,EAAE,SAAiB,EAAE,SAAmB,EAAE,OAAiB;gBACjF,IAAI,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAE/C,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK;oBAC/B,EAAE,CAAC,CAAE,KAAa,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC;wBAC1D,OAAO,CAAC,MAAM,GAAG;4BACb,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,aAAa;4BACjD,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,gBAAgB;yBAChD,CAAA;oBACL,CAAC;oBACD,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;wBAClB,OAAO,CAAE,KAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzC,CAAC;gBACL,CAAC,CAAC;gBAEF,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK;oBACjC,SAAA,MAAM,CAAC,SAAS,GAAG,SAAA,gBAAgB,CAAC,SAAS,CAAC;oBAC9C,SAAA,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;oBAChC,SAAA,YAAY,CAAC,OAAO,GAAG;wBACnB,SAAA,MAAM,CAAC,SAAS,GAAG,SAAA,gBAAgB,CAAC,MAAM,CAAC;wBAC3C,SAAA,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAC;oBAC3C,CAAC,CAAA;oBAED,SAAA,YAAY,CAAC,eAAe,GAAG,UAAU,CAAC;wBACtC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC;4BACxB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,0CAA0C;wBAChE,CAAC;oBACL,CAAC,CAAC;oBAEF,SAAA,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC;wBAC9B,SAAA,MAAM,CAAC,SAAS,GAAG,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzE,CAAC,CAAA;oBAED,SAAA,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC;wBAC9B,SAAA,MAAM,CAAC,SAAS,GAAG,SAAA,gBAAgB,CAAC,MAAM,CAAC;wBAC3C,SAAA,MAAM,CAAC,SAAS,GAAG,oBAAoB,CAAC;oBAC5C,CAAC,CAAA;oBAED,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC;wBACpB,SAAS,EAAE,CAAC;oBAChB,CAAC;gBACL,CAAC,CAAC;gBAEF,SAAS,CAAC,eAAe,GAAG,UAAU,KAAK;oBACvC,IAAI,EAAE,GAAS,KAAM,CAAC,MAAM,CAAC,MAAM,EAC/B,MAAM,GAAG,KAAK,CAAC;oBACnB,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE;wBAC5B,OAAO,EAAE,MAAM;qBAClB,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC,CAAA;YACL,CAAC;YACL,aAAC;QAAD,CAAC,AArDD,IAqDC;QArDY,eAAM,SAqDlB,CAAA;IACL,CAAC,EAvDa,QAAQ,GAAR,iBAAQ,KAAR,iBAAQ,QAuDrB;AACL,CAAC,EAzDM,QAAQ,KAAR,QAAQ,QAyDd;ACzDD,IAAO,QAAQ,CAsFd;AAtFD,WAAO,QAAQ;IACX,IAAc,QAAQ,CAoFrB;IApFD,WAAc,QAAQ;QAEd,eAAM,GAAmC;YACrC,SAAS,EAAE,SAAA,gBAAgB,CAAC,UAAU;YACtC,SAAS,EAAE,EAAE;SAChB,CAAC;QACN;YAEI,cAAY,SAAgB;gBAAhB,0BAAA,EAAA,gBAAgB;gBAIrB,mCAA8B,GAAG,UAAU,OAA0B;oBACxE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,IAAI,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC;wBAC3D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBAC/B,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,EAAE,CAAC,CAAC,SAAA,MAAM,CAAC,SAAS,IAAI,SAAA,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;wBAC/B,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,SAAA,MAAM,CAAC,SAAS,IAAI,SAAA,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;4BACvD,IAAI,IAAI,GAAG,IAAI,CAAC;4BAChB,UAAU,CAAC;gCACP,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;4BACjD,CAAC,EAAE,GAAG,CAAC,CAAC;wBACZ,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,SAAA,MAAM,CAAC,SAAS,IAAI,SAAA,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;4BACnD,IAAI,IAAI,GAAG,IAAI,CAAC;4BAChB,IAAI,CAAC,QAAQ,CAAC,SAAA,SAAS,EAAE;gCACrB,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;4BACjD,CAAC,EAAE,GAAG,CAAC,CAAC;wBACZ,CAAC;oBACL,CAAC;gBACL,CAAC,CAAA;gBAEO,iBAAY,GAAG,UAAU,MAAM;oBACnC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;wBACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC3B,CAAC;gBACL,CAAC,CAAA;gBAEO,iBAAY,GAAG,UAAU,OAA0B;oBACvD,IAAI,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,UAAU,OAAO;wBACzB,IAAI,CAAC,YAAY,CAAmB;4BAChC,aAAa,EAAE,OAAO;yBACzB,CAAC,CAAC;oBACP,CAAC,EACD,OAAO,GAAG,UAAU,GAAG;wBACnB,IAAI,CAAC,YAAY,CAAmB;4BAChC,YAAY,EAAE,IAAI;4BAClB,YAAY,EAAE,GAAG;yBACpB,CAAC,CAAC;oBACP,CAAC,CAAA;oBAEL,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;wBACnB,KAAK,KAAK;4BACN,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BAC5C,KAAK,CAAC;wBACV,KAAK,KAAK;4BAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BACpD,KAAK,CAAC;wBACV,KAAK,QAAQ;4BAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BAC1D,KAAK,CAAC;wBACV,KAAK,WAAW;4BAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BAAC,KAAK,CAAC;oBAC9E,CAAC;gBACL,CAAC,CAAA;gBAEM,QAAG,GAAG,UAAU,KAAc,EAAE,SAAmB,EAAE,OAAiB;oBACzE,IAAI,SAAS,GAAG,IAAI,SAAA,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBACvD,CAAC,CAAA;gBAEM,WAAM,GAAG,UAAU,KAAc,EAAE,SAAmB,EAAE,OAAiB;oBAC5E,IAAI,SAAS,GAAG,IAAI,SAAA,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC1D,CAAC,CAAA;gBAEM,QAAG,GAAG,UAAU,KAAc,EAAE,SAAmB,EAAE,OAAiB;oBACzE,IAAI,SAAA,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBACvC,CAAC,CAAA;gBAEM,aAAQ,GAAG,UAAU,SAAS,EAAE,SAAmB,EAAE,OAAiB;oBACzE,IAAI,MAAM,GAAG,UAAU,CAAC;oBACxB,IAAI,SAAA,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBACtD,CAAC,CAAA;gBAzEG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC/B,CAAC;YAyEL,WAAC;QAAD,CAAC,AA7ED,IA6EC;QA7EY,aAAI,OA6EhB,CAAA;IACL,CAAC,EApFa,QAAQ,GAAR,iBAAQ,KAAR,iBAAQ,QAoFrB;AACL,CAAC,EAtFM,QAAQ,KAAR,QAAQ,QAsFd;ACtFD,IAAO,QAAQ,CAqFd;AArFD,WAAO,QAAQ;IACX;;;OAGG;IACQ,aAAI,GAAG;QACd,SAAA,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACZ,SAAA,sBAAsB,CAAoB;gBACtC,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,SAAA,SAAS;aACnB,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC;IAEF;;;;;;MAME;IACS,YAAG,GAAG,UAAU,GAAW,EAAE,SAAmB,EAAE,OAAwB;QAAxB,wBAAA,EAAA,cAAwB;QACjF,IAAI,KAAK,GAAY;YACjB,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,KAAK,EAAE;gBACH,GAAG,EAAE,GAAG;aACX;SACJ,CAAC;QACF,SAAA,sBAAsB,CAAoB;YACtC,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,OAAO;SACnB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF;;;;;;;MAOE;IACS,YAAG,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE,SAA0B,EAAE,OAAwB;QAApD,0BAAA,EAAA,gBAA0B;QAAE,wBAAA,EAAA,cAAwB;QACvF,IAAI,KAAK,GAAY;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,EAAE;gBACD,GAAG,EAAE,GAAG;gBACR,KAAK,EAAE,KAAK;aACf;SACJ,CAAA;QACD,SAAA,sBAAsB,CAAoB;YACtC,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,OAAO;SACnB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF;;;;;;MAME;IACS,eAAM,GAAG,UAAU,GAAW,EAAE,SAA0B,EAAE,OAAwB;QAApD,0BAAA,EAAA,gBAA0B;QAAE,wBAAA,EAAA,cAAwB;QAC3F,IAAI,KAAK,GAAY;YACjB,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,KAAK,EAAE;gBACH,GAAG,EAAE,GAAG;aACX;SACJ,CAAA;QACD,SAAA,sBAAsB,CAAoB;YACtC,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,OAAO;SACnB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC,CAAA;AACL,CAAC,EArFM,QAAQ,KAAR,QAAQ,QAqFd;ACrFD,IAAO,OAAO,CAiDb;AAjDD,WAAO,OAAO;IACV,IAAY,SAgBX;IAhBD,WAAY,SAAS;QACjB,iDAAoC,CAAA;QACpC,+CAAkC,CAAA;QAClC,0DAA6C,CAAA;QAC7C,4DAA+C,CAAA;QAC/C,mCAAsB,CAAA;QACtB,kDAAqC,CAAA;QACrC,gDAAmC,CAAA;QACnC,2CAA8B,CAAA;QAC9B,qCAAwB,CAAA;QACxB,0CAA6B,CAAA;QAC7B,qDAAwC,CAAA;QACxC,8CAAiC,CAAA;QACjC,wCAA2B,CAAA;QAC3B,uDAA0C,CAAA;QAC1C,mDAAsC,CAAA;IAC1C,CAAC,EAhBW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAgBpB;IAED,IAAY,SAIX;IAJD,WAAY,SAAS;QACjB,wBAAW,CAAA;QACX,uBAAU,CAAA;QACV,sBAAS,CAAA;IACb,CAAC,EAJW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAIpB;IAAA,CAAC;IAEF,IAAY,eAIX;IAJD,WAAY,eAAe;QACvB,2CAAwB,CAAA;QACxB,oCAAiB,CAAA;QACjB,6CAA0B,CAAA;IAC9B,CAAC,EAJW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAI1B;IAAA,CAAC;IAEF,IAAY,gBAKX;IALD,WAAY,gBAAgB;QACxB,2CAAuB,CAAA;QACvB,qCAAiB,CAAA;QACjB,8CAA0B,CAAA;QAC1B,qDAAiC,CAAA;IACrC,CAAC,EALW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAK3B;IAED,IAAY,cAIX;IAJD,WAAY,cAAc;QACtB,2BAAS,CAAA;QACT,+BAAa,CAAA;QACb,2BAAS,CAAA;IACb,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB;IAED,IAAY,QAIX;IAJD,WAAY,QAAQ;QAChB,6BAAiB,CAAA;QACjB,6BAAiB,CAAA;QACjB,2BAAe,CAAA;IACnB,CAAC,EAJW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAInB;AACL,CAAC,EAjDM,OAAO,KAAP,OAAO,QAiDb;AEjDD,IAAO,OAAO,CAmBb;AAnBD,WAAO,OAAO;IACC,iBAAS,GAAG,KAAK,EACxB,iBAAS,GAAW,CAAC,EACrB,cAAM,GAAiC;QACnC,SAAS,EAAE,QAAA,gBAAgB,CAAC,UAAU;QACtC,SAAS,EAAE,EAAE;KAChB,EACD,mBAAW,GAAe,EAAE,CAAC;IAEtB,kBAAU,GAAG,UAAU,KAAK;QACnC,MAAM,KAAK,CAAC;IAChB,CAAC,CAAA;IAEU,yBAAiB,GAAG,UAAU,KAAK;QAC1C,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC;QACf,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC,CAAA;AACL,CAAC,EAnBM,OAAO,KAAP,OAAO,QAmBb;ACnBD,IAAO,OAAO,CA2Db;AA3DD,WAAO,OAAO;IACV;QAAA;QAyDA,CAAC;QAxDU,cAAQ,GAAf,UAAgB,SAAoB,EAAE,WAAgB;YAClD,IAAI,KAAK,GAAW;gBAChB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,EAAE;aACd,CAAC;YACF,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBAChB,KAAK,QAAA,SAAS,CAAC,QAAQ;oBAAE,KAAK,CAAC,OAAO,GAAG,gCAAgC,CAAC;oBAAC,KAAK,CAAC;gBACjF,KAAK,QAAA,SAAS,CAAC,eAAe;oBAAE,KAAK,CAAC,OAAO,GAAG,8BAA8B,CAAC;oBAAC,KAAK,CAAC;gBACtF,KAAK,QAAA,SAAS,CAAC,cAAc;oBAAE,KAAK,CAAC,OAAO,GAAG,6BAA6B,CAAC;oBAAC,KAAK,CAAC;gBACpF,KAAK,QAAA,SAAS,CAAC,mBAAmB;oBAAE,KAAK,CAAC,OAAO,GAAG,0BAA0B,CAAC;oBAAC,KAAK,CAAC;gBACtF,KAAK,QAAA,SAAS,CAAC,oBAAoB;oBAAE,KAAK,CAAC,OAAO,GAAG,2BAA2B,CAAC;oBAAC,KAAK,CAAC;gBACxF,KAAK,QAAA,SAAS,CAAC,eAAe;oBAAE,KAAK,CAAC,OAAO,GAAG,mBAAmB,CAAC;oBAAC,KAAK,CAAC;gBAC3E,KAAK,QAAA,SAAS,CAAC,SAAS;oBAAE,KAAK,CAAC,OAAO,GAAG,oBAAoB,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;oBAAC,KAAK,CAAC;gBAChG,KAAK,QAAA,SAAS,CAAC,cAAc;oBAAE,KAAK,CAAC,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,kBAAkB,CAAC;oBACvG,KAAK,CAAC;gBACV,KAAK,QAAA,SAAS,CAAC,SAAS;oBAAE,KAAK,CAAC,OAAO,GAAG,wCAAwC,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;oBACjH,KAAK,CAAC;gBACV,KAAK,QAAA,SAAS,CAAC,WAAW;oBAAE,KAAK,CAAC,OAAO,GAAG,6BAA6B,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,4BAA4B,CAAC;oBACjI,KAAK,CAAC;gBACV,KAAK,QAAA,SAAS,CAAC,gBAAgB;oBAAE,KAAK,CAAC,OAAO,GAAG,gCAAgC,CAAC;oBAC9E,KAAK,CAAC;gBACV,KAAK,QAAA,SAAS,CAAC,aAAa;oBAAE,KAAK,CAAC,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,kBAAkB,CAAC;oBACpG,KAAK,CAAC;gBACV,KAAK,QAAA,SAAS,CAAC,UAAU;oBAAE,KAAK,CAAC,OAAO,GAAG,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC;oBACjG,KAAK,CAAC;gBACV,SAAS,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,CAAC,KAAK,CAAC;QACjB,CAAC;QAEM,gCAA0B,GAAjC,UAAkC,GAAQ;YACtC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YACpB,OAAO,CAAC,EAAE,EAAE,CAAC;gBACT,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;gBACjC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAA;YACnB,CAAC;QACL,CAAC;QAED;;;;;WAKG;QACI,eAAS,GAAG;YACd,IAAY,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAK,IAAY,CAAC,YAAY,IAAK,IAAY,CAAC,eAAe,IAAK,IAAY,CAAC,WAAW,CAAC;YACrI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACX,IAAY,CAAC,cAAc,GAAI,IAAY,CAAC,cAAc,IAAK,IAAY,CAAC,oBAAoB,IAAK,IAAY,CAAC,gBAAgB,CAAC;gBACnI,IAAY,CAAC,WAAW,GAAI,IAAY,CAAC,WAAW,IAAK,IAAY,CAAC,iBAAiB,IAAK,IAAY,CAAC,aAAa,CAAA;YAC3H,CAAC;YACD,IAAI,CAAC,CAAC;gBACF,QAAA,UAAU,CAAC,wCAAwC,CAAC,CAAC;YACzD,CAAC;QACL,CAAC,CAAA;QACL,YAAC;KAAA,AAzDD,IAyDC;IAzDY,aAAK,QAyDjB,CAAA;AACL,CAAC,EA3DM,OAAO,KAAP,OAAO,QA2Db;AC3DD,IAAO,OAAO,CAoHb;AApHD,WAAO,OAAO;IAEV;;;;;;MAME;IACS,iBAAS,GAAG,UAAU,MAAc,EAAE,QAAkB,EAAE,WAA4B;QAA5B,4BAAA,EAAA,kBAA4B;QAC7F,EAAE,CAAC,CAAC,QAAA,MAAM,CAAC,SAAS,IAAI,QAAA,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;YACrD,IAAI,MAAM,CAAC;YACX,EAAE,CAAC,CAAC,OAAO,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC;gBAC5B,QAAA,YAAY,CAAC,MAAM,EAAE,UAAU,SAAS;oBACpC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;YACP,CAAC;YACD,IAAI,CAAC,CAAC;gBACF,QAAA,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,SAAS;oBAC3C,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,CAAA;gBAC/C,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QACD,IAAI,CAAC,CAAC;YACF,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBACd,IAAI,KAAK,GAAW;oBAChB,IAAI,EAAE,QAAA,MAAM,CAAC,SAAS;oBACtB,OAAO,EAAE,EAAE;iBACd,CAAC;gBACF,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBACjB,KAAK,QAAA,SAAS,CAAC,gBAAgB;wBAC3B,KAAK,CAAC,OAAO,GAAG,sBAAsB,CAAC;wBAAC,KAAK,CAAC;oBAClD,KAAK,QAAA,SAAS,CAAC,kBAAkB;wBAC7B,KAAK,CAAC,OAAO,GAAG,4BAA4B,CAAC;wBAAC,KAAK,CAAC;gBAC5D,CAAC;gBACD,WAAW,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IAED;;;;;MAKE;IACS,oBAAY,GAAG,UAAU,MAAc,EAAE,QAAkB;QAClE,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,GAAG,aAAa,EAAE,UAAU,SAAS;YACjE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACP,CAAC,CAAA;IAED;;;;;MAKE;IACS,mBAAW,GAAG,UAAU,MAAc,EAAE,QAAkB;QACjE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACX,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,GAAG,SAAS,EAAE,UAAU,MAAM;gBAC1D,QAAQ,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAA;IAED;;;;;MAKE;IACS,cAAM,GAAG,UAAU,KAAK;QAC/B,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;gBACnB,KAAK,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;gBACxC,KAAK,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,KAAK,CAAC;IACjB,CAAC,CAAA;IAED;;;MAGE;IACS,iBAAS,GAAG;QACnB,QAAA,SAAS,GAAG,IAAI,CAAC;QACjB,EAAE,CAAC,CAAC,QAAA,cAAc,CAAC,CAAC,CAAC;YACjB,QAAA,cAAc,CAAC,WAAW,CAAoB;gBAC1C,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE;oBACH,OAAO,EAAE,QAAA,SAAS;iBACrB;aACJ,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAA;IAED;;;MAGE;IACS,kBAAU,GAAG;QACpB,QAAA,SAAS,GAAG,KAAK,CAAC;QAClB,EAAE,CAAC,CAAC,QAAA,cAAc,CAAC,CAAC,CAAC;YACjB,QAAA,cAAc,CAAC,WAAW,CAAoB;gBAC1C,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE;oBACH,OAAO,EAAE,QAAA,SAAS;iBACrB;aACJ,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAA;AAEL,CAAC,EApHM,OAAO,KAAP,OAAO,QAoHb;ACpHD,IAAO,OAAO,CAwCb;AAxCD,WAAO,OAAO;IACV,IAAc,KAAK,CAsClB;IAtCD,WAAc,KAAK;QAYf;YASI,gBAAY,GAAY,EAAE,SAAiB;gBACvC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;oBACnB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACzB,CAAC;gBACD,IAAI,CAAC,CAAC;oBACF,QAAA,UAAU,CAAC,uCAAuC,GAAG,SAAS,CAAC,CAAC;gBACpE,CAAC;gBACD,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC3E,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;gBAClE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBACtD,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;gBACzD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC5F,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAC/B,CAAC;YAEL,aAAC;QAAD,CAAC,AAxBD,IAwBC;QAxBY,YAAM,SAwBlB,CAAA;IAEL,CAAC,EAtCa,KAAK,GAAL,aAAK,KAAL,aAAK,QAsClB;AACL,CAAC,EAxCM,OAAO,KAAP,OAAO,QAwCb;ACvCD,IAAO,OAAO,CAqEb;AArED,WAAO,OAAO;IAEV,IAAc,KAAK,CAkElB;IAlED,WAAc,KAAK;QAQf;YASI,eAAY,KAAa,EAAE,MAAc;gBARzC,SAAI,GAAW,EAAE,CAAC;gBAClB,YAAO,GAAkB,EAAE,CAAC;gBAE5B,kBAAkB;gBAClB,kBAAa,GAAY,KAAK,CAAC;gBAC/B,oBAAe,GAAY,KAAK,CAAC;gBACjC,eAAU,GAAW,EAAE,CAAC;gBAGpB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC9D,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI;oBAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAA,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAA;gBAEF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;YAED,iBAAiB;YAET,6BAAa,GAArB,UAAsB,MAAM;gBACxB,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI;oBAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;oBAChC,CAAC;gBACL,CAAC,CAAC,CAAA;YAEN,CAAC;YAEO,gCAAgB,GAAxB,UAAyB,MAAc;gBACnC,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,EAAE,UAAU,YAAY;oBACnF,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC;wBACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;oBAChC,CAAC;oBAED,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;wBACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC9B,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;YAEO,4BAAY,GAApB,UAAqB,MAAc;gBAC/B,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,QAAA,SAAS,GAAG,QAAA,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAA,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBAChE,oBAAoB;gBACpB,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,GAAG,aAAa,EAAE,QAAA,SAAS,CAAC;qBAEvD,GAAG,CAAC,UAAU,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,EAAE,QAAA,SAAS,CAAC,CAAC;gBACxE,IAAI,CAAC,OAAO,GAAG,QAAA,SAAS,CAAC;YAC7B,CAAC;YAEL,YAAC;QAAD,CAAC,AAzDD,IAyDC;QAzDY,WAAK,QAyDjB,CAAA;IACL,CAAC,EAlEa,KAAK,GAAL,aAAK,KAAL,aAAK,QAkElB;AACL,CAAC,EArEM,OAAO,KAAP,OAAO,QAqEb;ACrED,IAAO,OAAO,CAoBb;AApBD,WAAO,OAAO;IACV,IAAc,KAAK,CAkBlB;IAlBD,WAAc,KAAK;QAMf;YAII,kBAAY,QAAmB;gBAF/B,WAAM,GAAiB,EAAE,CAAC;gBAGtB,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC1B,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI;oBAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAA;YACN,CAAC;YACL,eAAC;QAAD,CAAC,AAXD,IAWC;QAXY,cAAQ,WAWpB,CAAA;IACL,CAAC,EAlBa,KAAK,GAAL,aAAK,KAAL,aAAK,QAkBlB;AACL,CAAC,EApBM,OAAO,KAAP,OAAO,QAoBb;ACrBD,IAAO,OAAO,CAkHb;AAlHD,WAAO,OAAO;IACV,IAAc,QAAQ,CA+GrB;IA/GD,WAAc,QAAQ;QAClB;YAAA;gBAEc,aAAQ,GAAG,UAAU,SAAiB;oBAC5C,IAAI,YAAmB,EACnB,IAAI,GAAG,IAAI,CAAC;oBAChB,SAAA,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK;wBACvC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC;4BAC1B,YAAY,GAAG,KAAK,CAAC;4BACrB,MAAM,CAAC,KAAK,CAAC;wBACjB,CAAC;wBACD,MAAM,CAAC,IAAI,CAAC;oBAChB,CAAC,CAAC,CAAC;oBACH,MAAM,CAAC,YAAY,CAAC;gBACxB,CAAC,CAAA;gBAES,gBAAW,GAAG,UAAU,KAAK,EAAE,EAAE;oBACvC,IAAI,QAAqB,CAAC;oBAC1B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACT,KAAK,GAAG;4BAAE,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;4BAAC,KAAK,CAAC;wBACnF,KAAK,GAAG;4BAAE,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;4BAAC,KAAK,CAAC;wBAChE,KAAK,IAAI;4BAAE,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;4BAAC,KAAK,CAAC;wBAC3D,KAAK,GAAG;4BAAE,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;4BAAC,KAAK,CAAC;wBAChE,KAAK,IAAI;4BAAE,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;4BAAC,KAAK,CAAC;wBAC3D;4BAAS,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAAC,KAAK,CAAC;oBACvD,CAAC;oBACD,MAAM,CAAC,QAAQ,CAAC;gBAEpB,CAAC,CAAA;gBAES,uBAAkB,GAAG,UAAU,KAAK;oBAC1C,IAAI,QAAQ,GAAG,KAAK,CAAC;oBACrB,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;wBACpB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;4BACX,MAAM,CAAC,GAAG,CAAC;wBACf,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,QAAQ,GAAG,IAAI,CAAC;wBACpB,CAAC;oBACL,CAAC;gBACL,CAAC,CAAA;gBAES,kBAAa,GAAG,UAAU,SAAS;oBACzC,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,UAAU,CAAA;oBACpD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvD,CAAC,CAAC;gBAEM,eAAU,GAAG,UAAU,SAAS;oBACpC,IAAI,WAAW,GAAmB,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,EAC/E,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;oBACrD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;gBAC/B,CAAC,CAAA;gBAES,oBAAe,GAAG,UAAU,MAAM;oBACxC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBACtB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;oBACjB,CAAC,CAAC,CAAC;oBACH,MAAM,CAAC,MAAM,CAAC;gBAClB,CAAC,CAAA;gBAES,qBAAgB,GAAG,UAAU,MAAM;oBACzC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBACtB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;oBACjB,CAAC,CAAC,CAAC;oBACH,MAAM,CAAC,MAAM,CAAC;gBAClB,CAAC,CAAA;gBAES,sBAAiB,GAAG,UAAU,MAAM;oBAC1C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBACtB,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC1D,CAAC,CAAC,CAAC;oBACH,MAAM,CAAC,MAAM,CAAC;gBAClB,CAAC,CAAA;gBAES,uBAAkB,GAAG,UAAU,MAAM;oBAC3C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBACtB,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC1D,CAAC,CAAC,CAAC;oBACH,MAAM,CAAC,MAAM,CAAC;gBAClB,CAAC,CAAC;YA+BN,CAAC;YA7BW,mCAAc,GAAtB,UAAuB,IAAY;gBAC/B,IAAI,OAAO,GAAG,EAAE,EACZ,oBAAoB,GAAG,UAAU,IAAY,EAAE,KAAK,EAAE,KAAa;oBAC/D,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;wBACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBACjC,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACJ,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC5B,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;wBAChC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;wBAC7C,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;wBAChC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;oBACjD,CAAC;gBACL,CAAC,CAAC;gBACN,oBAAoB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAClC,MAAM,CAAC,OAAO,CAAC;YACnB,CAAC;YAES,4CAAuB,GAAjC,UAAkC,IAAI,EAAE,OAAO;gBAC3C,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBACV,IAAI,OAAO,GAAG,EAAE,CAAC;oBACjB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC1D,CAAC;oBACD,MAAM,CAAC,OAAO,CAAC;gBACnB,CAAC;gBACD,IAAI,CAAC,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACrC,CAAC;YACL,CAAC;YACL,iBAAC;QAAD,CAAC,AA7GD,IA6GC;QA7GY,mBAAU,aA6GtB,CAAA;IACL,CAAC,EA/Ga,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA+GrB;AAEL,CAAC,EAlHM,OAAO,KAAP,OAAO,QAkHb;AClHD,IAAO,OAAO,CAoPb;AApPD,WAAO,OAAO;IACV,IAAc,QAAQ,CAiPrB;IAjPD,WAAc,QAAQ;QAClB;YAA0B,wBAAU;YAApC;gBAAA,qEA+OC;gBA7OG,kBAAY,GAAY,KAAK,CAAC;gBAC9B,gBAAU,GAAG,CAAC,CAAC;gBACf,iBAAW,GAAG,CAAC,CAAC;gBAMhB,oBAAc,GAAY,IAAI,CAAC;gBAErB,oBAAc,GAAG,UAAU,CAAC,EAAE,WAAmB;oBAAnB,4BAAA,EAAA,mBAAmB;oBACvD,EAAE,IAAI,CAAC,UAAU,CAAC;oBAClB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;wBACvB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;4BACvB,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gCACf,IAAI,KAAK,GAAW;oCAChB,IAAI,EAAG,CAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;oCAClC,OAAO,EAAG,CAAS,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;iCAC3C,CAAA;gCACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;4BACxB,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;4BACpB,CAAC;4BACD,EAAE,CAAC,CAAC,QAAA,SAAS,CAAC,CAAC,CAAC;gCACZ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BACzB,CAAC;wBACL,CAAC;oBACL,CAAC;gBACL,CAAC,CAAA;gBAES,0BAAoB,GAAG,UAAU,CAAC;oBACxC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBACzC,CAAC,CAAA;gBAES,wBAAkB,GAAG,UAAU,EAAgB,EAAE,IAAI;oBAC3D,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;wBACd,KAAK,eAAe;4BAChB,IAAI,KAAK,GAAG,QAAA,KAAK,CAAC,QAAQ,CAAC,QAAA,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;4BAC1D,QAAA,UAAU,CAAC,KAAK,CAAC,CAAC;wBACtB,SAAS,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAC/B,CAAC;gBACL,CAAC,CAAA;gBA0HS,oBAAc,GAAG;oBACvB,IAAI,MAAM,GAAG,QAAA,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACjD,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC;wBACjC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACrE,CAAC;oBACD,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBAC/C,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBACrC,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC;4BAC3B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;4BACpG,IAAI,GAAG,GAAG,QAAA,iBAAiB,CAAC,KAAK,CAAC,CAAC;4BACnC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gCACV,KAAK,MAAM;oCAAE,CAAC;wCACV,IAAI,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wCACxC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4CACjB,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gDACzB,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,QAAA,SAAS,CAAC,GAAG,CAAC,CAAC;4CACjE,CAAC;4CACD,IAAI,CAAC,CAAC;gDACF,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,QAAA,SAAS,CAAC,IAAI,CAAC,CAAC;4CAClE,CAAC;wCACL,CAAC;wCACD,IAAI,CAAC,CAAC;4CACF,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,QAAA,SAAS,CAAC,KAAK,CAAC,CAAC;wCACnE,CAAC;oCACL,CAAC;oCAAA,CAAC;oCAAC,KAAK,CAAC;gCACT,KAAK,IAAI;oCACL,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oCACzC,KAAK,CAAC;gCACV,KAAK,GAAG,CAAC;gCACT,KAAK,GAAG,CAAC;gCACT,KAAK,GAAG,CAAC;gCACT,KAAK,IAAI,CAAC;gCACV,KAAK,IAAI;oCACL,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;oCAC3C,KAAK,CAAC;gCACV,KAAK,WAAW,EAAE,KAAK,CAAC;gCACxB,SAAS,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;4BACnD,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;4BACnE,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;wBAC1C,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wBACzB,IAAI,CAAC,KAAK,GAAG,QAAA,KAAK,CAAC,QAAQ,CAAC,QAAA,SAAS,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;wBAC9E,QAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC3B,CAAC;gBACL,CAAC,CAAA;gBAES,4BAAsB,GAAG,UAAU,GAAG;oBAC5C,IAAI,OAAO,GAAG,EAAE,EACZ,GAAG,CAAC;oBACR,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;wBACnB,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;wBAChB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;4BACX,KAAK,QAAA,cAAc,CAAC,EAAE;gCAClB,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC;oCACpB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gCAC5E,CAAC;gCACD,KAAK,CAAC;4BACV,KAAK,QAAA,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;4BAChC;gCACI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;wBACpE,CAAC;wBACD,GAAG,CAAC,IAAI,CAAC,GAAG;4BACR,EAAE,EAAE,OAAO;yBACd,CAAA;wBACD,OAAO,GAAG,EAAE,CAAC;oBACjB,CAAC;oBACD,MAAM,CAAC,GAAG,CAAC;gBACf,CAAC,CAAA;;YACL,CAAC;YAjMG;;;;;;;;;cASE;YACQ,0CAA2B,GAArC,UAAsC,QAAQ;gBAC1C,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EACxB,MAAM,GAAG,IAAI,CAAC;gBAClB,IAAI,OAAO,GAAG,UAAU,MAAM,EAAE,KAAK;oBACjC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;oBAC9B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACtD,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;4BACrB,MAAM,GAAG,IAAI,CAAC;4BACd,KAAK,CAAC;wBACV,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,MAAM,GAAG,KAAK,CAAC;wBACnB,CAAC;oBACL,CAAC;oBAAA,CAAC;gBACN,CAAC,EACG,SAAS,GAAG,UAAU,MAAM,EAAE,KAAK;oBAC/B,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EACtC,UAAqB,EACrB,SAAS,EACT,WAAW,CAAC;oBAChB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACZ,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;wBACtB,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAA,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAA,SAAS,CAAC,IAAI,CAAC;oBACpE,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;wBACtB,UAAU,GAAG,QAAA,SAAS,CAAC,KAAK,CAAC;oBACjC,CAAC;oBACD,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;oBAE5B,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;wBACjB,KAAK,QAAA,SAAS,CAAC,GAAG;4BACd,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;4BACrD,EAAE,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;gCAClB,MAAM,GAAG,KAAK,CAAC;4BACnB,CAAC;4BAAA,CAAC;4BAAC,KAAK,CAAC;wBACb,KAAK,QAAA,SAAS,CAAC,KAAK;4BAChB,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;4BACrD,EAAE,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;gCACrC,MAAM,GAAG,KAAK,CAAC;4BACnB,CAAC;4BAAA,CAAC;4BAAC,KAAK,CAAC;wBACb;4BACI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;4BACzD,EAAE,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gCAChD,MAAM,GAAG,KAAK,CAAC;4BACnB,CAAC;4BAAA,CAAC;oBACV,CAAC;gBACL,CAAC,EACD,kBAAkB,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE,MAAM;oBAChD,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;oBACzC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;wBACb,cAAc;wBACd,KAAK,GAAG;4BAAE,EAAE,CAAC,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC;gCAClC,MAAM,GAAG,KAAK,CAAC;4BACnB,CAAC;4BAAA,CAAC;4BAAC,KAAK,CAAC;wBACT,WAAW;wBACX,KAAK,GAAG;4BAAE,EAAE,CAAC,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC;gCAClC,MAAM,GAAG,KAAK,CAAC;4BACnB,CAAC;4BAAA,CAAC;4BAAC,KAAK,CAAC;wBACT,iBAAiB;wBACjB,KAAK,IAAI;4BAAE,EAAE,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC;gCAClC,MAAM,GAAG,KAAK,CAAC;4BACnB,CAAC;4BAAA,CAAC;4BAAC,KAAK,CAAC;wBACT,qBAAqB;wBACrB,KAAK,IAAI;4BAAE,EAAE,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC;gCAClC,MAAM,GAAG,KAAK,CAAC;4BACnB,CAAC;4BAAA,CAAC;4BAAC,KAAK,CAAC;wBACT,SAAS;wBACT,KAAK,GAAG;4BAAE,EAAE,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;gCAClE,MAAM,GAAG,KAAK,CAAC;4BACnB,CAAC;4BAAA,CAAC;4BAAC,KAAK,CAAC;oBACb,CAAC;gBACL,CAAC,CAAC;gBACN,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC;oBACvB,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;oBAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;wBACT,EAAE,CAAC,CAAC,OAAO,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC;4BACjC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;gCAC1B,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;wCACV,KAAK,IAAI;4CAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;4CAAC,KAAK,CAAC;wCACpD,KAAK,MAAM;4CAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;4CAAC,KAAK,CAAC;wCACxD,KAAK,GAAG,CAAC;wCACT,KAAK,GAAG,CAAC;wCACT,KAAK,GAAG,CAAC;wCACT,KAAK,IAAI,CAAC;wCACV,KAAK,IAAI;4CACL,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;4CAAC,KAAK,CAAC;oCACjE,CAAC;gCACL,CAAC;gCACD,IAAI,CAAC,CAAC;oCACF,KAAK,CAAC;gCACV,CAAC;4BACL,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;4BACpC,EAAE,CAAC,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC;gCAC9B,MAAM,GAAG,KAAK,CAAC;gCACf,KAAK,CAAC;4BACV,CAAC;wBACL,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,KAAK,CAAC;oBACV,CAAC;gBACL,CAAC;gBACD,MAAM,CAAC,MAAM,CAAC;YAClB,CAAC;YA2EL,WAAC;QAAD,CAAC,AA/OD,CAA0B,SAAA,UAAU,GA+OnC;QA/OY,aAAI,OA+OhB,CAAA;IACL,CAAC,EAjPa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAiPrB;AAEL,CAAC,EApPM,OAAO,KAAP,OAAO,QAoPb;ACpPD,IAAO,OAAO,CAsGb;AAtGD,WAAO,OAAO;IACV,IAAc,QAAQ,CAoGrB;IApGD,WAAc,QAAQ;QAClB;YACI,kBAAY,SAAS,EAAE,SAAmB,EAAE,OAAiB;gBACzD,IAAI,IAAI,GAAG,IAAI,EACX,aAAa,GAAG,EAAE,EAClB,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,SAAA,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAE/D,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK;oBAC/B,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;wBAClB,OAAO,CAAE,KAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzC,CAAC;gBACL,CAAC,CAAC;gBAEF,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK;oBACjC,QAAA,MAAM,CAAC,SAAS,GAAG,QAAA,gBAAgB,CAAC,SAAS,CAAC;oBAC9C,SAAA,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;oBAChC,SAAA,YAAY,CAAC,OAAO,GAAG;wBACnB,QAAA,MAAM,CAAC,SAAS,GAAG,QAAA,gBAAgB,CAAC,MAAM,CAAC;wBAC3C,QAAA,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAC;oBAC3C,CAAC,CAAA;oBAED,SAAA,YAAY,CAAC,eAAe,GAAG,UAAU,CAAC;wBACtC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC;4BACxB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,0CAA0C;wBAChE,CAAC;oBACL,CAAC,CAAC;oBAEF,SAAA,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC;wBAC9B,QAAA,MAAM,CAAC,SAAS,GAAG,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzE,CAAC,CAAA;oBAED,SAAA,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC;wBAC9B,QAAA,MAAM,CAAC,SAAS,GAAG,QAAA,gBAAgB,CAAC,MAAM,CAAC;wBAC3C,QAAA,MAAM,CAAC,SAAS,GAAG,oBAAoB,CAAC;oBAC5C,CAAC,CAAA;oBAED,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC;wBACpB,SAAS,CAAC,aAAa,CAAC,CAAC;oBAC7B,CAAC;oBACD,2BAA2B;oBAC3B,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,SAAA,cAAc,CAAC,IAAI,GAAG,SAAS,EAAE,SAAA,cAAc,CAAC,CAAC;gBAC/E,CAAC,CAAC;gBAEF,SAAS,CAAC,eAAe,GAAG,UAAU,KAAK;oBACvC,IAAI,EAAE,GAAS,KAAM,CAAC,MAAM,CAAC,MAAM,CAAC;oBACpC,SAAA,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI;wBACxC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;4BACrB,gCAAgC;4BAChC,EAAE,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gCAC1C,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACpC,CAAC;4BACD,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;wBAChC,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;4BAC5B,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;wBAChC,CAAC;oBACL,CAAC,CAAC,CAAA;gBAEN,CAAC,CAAA;gBAED,IAAI,iBAAiB,GAAG,UAAU,YAAY,EAAE,IAAW;oBACvD,IAAI,CAAC;wBACD,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;4BAC7B,IAAI,KAAK,GAAG,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE;gCAClD,OAAO,EAAE,IAAI,CAAC,UAAU;6BAC3B,CAAC,CAAC;4BACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,MAAc;gCACzC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;oCACpB,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gCAClE,CAAC;gCACD,IAAI,CAAC,CAAC;oCACF,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gCAC3E,CAAC;gCAED,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;oCACvB,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,SAAA,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;gCACvG,CAAC;4BACL,CAAC,CAAC,CAAA;wBACN,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,KAAK,GAAG,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE;gCAClD,aAAa,EAAE,IAAI;6BACtB,CAAC,CAAC;4BACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,MAAc;gCACzC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gCACvE,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;oCACvB,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,SAAA,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;gCACvG,CAAC;4BACL,CAAC,CAAC,CAAA;wBACN,CAAC;wBACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC9B,2BAA2B;wBAC3B,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,SAAA,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBAChG,CAAC;oBACD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACP,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACrB,CAAC;gBACL,CAAC,CAAA;YACL,CAAC;YACL,eAAC;QAAD,CAAC,AAlGD,IAkGC;QAlGY,iBAAQ,WAkGpB,CAAA;IACL,CAAC,EApGa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAoGrB;AACL,CAAC,EAtGM,OAAO,KAAP,OAAO,QAsGb;ACtGD,IAAO,OAAO,CAwCb;AAxCD,WAAO,OAAO;IACV,IAAc,QAAQ,CAsCrB;IAtCD,WAAc,QAAQ;QAClB;YACI,gBAAY,IAAY,EAAE,SAAmB,EAAE,OAAiB;gBAQhE,aAAQ,GAAG,UAAU,IAAY,EAAE,SAAmB,EAAE,OAAiB;oBACrE,IAAI,aAAa,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBACnD,aAAa,CAAC,SAAS,GAAG;wBACtB,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;4BAClB,OAAO,CAAC,iDAAiD,CAAC,CAAC;wBAC/D,CAAC;wBAAA,CAAC;oBACN,CAAC,CAAC;oBACF,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;wBAC/B,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;4BAClB,OAAO,CAAE,KAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBACzC,CAAC;oBACL,CAAC,CAAA;oBACD,aAAa,CAAC,SAAS,GAAG;wBACtB,QAAA,MAAM,CAAC,SAAS,GAAG,QAAA,gBAAgB,CAAC,MAAM,CAAC;wBAC3C,QAAQ,CAAC,MAAM,CAAC,UAAU,GAAG,SAAA,cAAc,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC;wBAClE,SAAA,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,KAAkB;4BACtD,QAAQ,CAAC,MAAM,CAAC,UAAU,GAAG,SAAA,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC;4BAClF,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,MAAc;gCAC1C,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;oCACvB,QAAQ,CAAC,MAAM,CAAC,UAAU,GAAG,SAAA,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;gCACxG,CAAC;4BACL,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;wBACH,QAAQ,CAAC,MAAM,CAAC,UAAU,GAAG,SAAA,cAAc,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;wBAC9D,SAAS,EAAE,CAAC;oBAChB,CAAC,CAAA;gBACL,CAAC,CAAA;gBAjCG,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,SAAA,YAAY,CAAC,KAAK,EAAE,CAAC;gBACrB,UAAU,CAAC;oBACP,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC5C,CAAC,EAAE,GAAG,CAAC,CAAC;YACZ,CAAC;YA6BL,aAAC;QAAD,CAAC,AApCD,IAoCC;QApCY,eAAM,SAoClB,CAAA;IACL,CAAC,EAtCa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAsCrB;AACL,CAAC,EAxCM,OAAO,KAAP,OAAO,QAwCb;ACxCD,IAAO,OAAO,CA6Eb;AA7ED,WAAO,OAAO;IACV,IAAc,QAAQ,CA2ErB;IA3ED,WAAc,QAAQ;QAClB;YAAkC,gCAAI;YAAtC;gBAAA,qEAyEC;gBAxEG,oBAAc,GAAG,EAAE,CAAC;gBAGb,4BAAsB,GAAG;oBAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC/E,CAAC,CAAA;gBAES,6BAAuB,GAAG,UAAU,KAAK,EAAE,MAAM;oBACvD,IAAI,IAAI,GAAG,IAAI,EACX,UAAU,GAAG,CAAC,EACd,KAAK,EACL,SAAS,GAAG,KAAK,CAAC,IAAI,EACtB,UAAU,GAAG;wBACT,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;wBAC7B,aAAa,EAAE,CAAC;oBACpB,CAAC,EACD,aAAa,GAAG;wBACZ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;4BACR,mBAAmB,EAAE,CAAC;wBAC1B,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;wBAC5B,CAAC;oBACL,CAAC,EACD,mBAAmB,GAAG;wBAClB,IAAI,KAAK,GAAG,CAAC,EACT,oBAAoB,GAAG,UAAU,MAAM;4BACnC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gCACT,IAAI,iBAAiB,GAAG,UAAU,KAAgB,EAAE,OAAY;oCAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oCACzB,IAAI,CAAC,KAAK,GAAG,QAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gCAChD,CAAC,EACG,uBAAuB,GAAG;oCACtB,uBAAuB;oCACvB,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,QAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wCAC/C,iBAAiB,CAAC,QAAA,SAAS,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oCACxE,CAAC;oCAED,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;wCACvE,iBAAiB,CAAC,QAAA,SAAS,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oCAC1E,CAAC;oCACD,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gCACjD,CAAC,CAAC;gCACN,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,6BAA6B;oCAC7B,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;wCACvB,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,SAAA,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,EAAE,UAAU,WAAmB;4CACzH,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC;4CACnC,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,SAAA,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,EAAE,WAAW,CAAC,CAAC;4CAC7G,uBAAuB,EAAE,CAAC;wCAC9B,CAAC,CAAC,CAAC;oCACP,CAAC;oCACD,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;wCACpD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;wCACpC,uBAAuB,EAAE,CAAC;oCAC9B,CAAC;oCACD,IAAI,CAAC,CAAC;wCACF,uBAAuB,EAAE,CAAC;oCAC9B,CAAC;gCACL,CAAC;gCACD,IAAI,CAAC,CAAC;oCACF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gCAC1C,CAAC;4BACL,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,UAAU,EAAE,CAAC;4BACjB,CAAC;wBACL,CAAC,CAAA;wBACL,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACjD,CAAC,CAAA;oBACL,UAAU,EAAE,CAAC;gBACjB,CAAC,CAAA;;YACL,CAAC;YAAD,mBAAC;QAAD,CAAC,AAzED,CAAkC,SAAA,IAAI,GAyErC;QAzEY,qBAAY,eAyExB,CAAA;IACL,CAAC,EA3Ea,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA2ErB;AACL,CAAC,EA7EM,OAAO,KAAP,OAAO,QA6Eb;AC7ED,IAAO,OAAO,CA2Eb;AA3ED,WAAO,OAAO;IACV,IAAc,QAAQ,CAyErB;IAzED,WAAc,QAAQ;QAClB;YAA4B,0BAAY;YA2CpC,gBAAY,KAAc,EAAE,SAAmB,EAAE,OAAiB;gBAAlE,YACI,iBAAO,SA0BV;gBArEO,gBAAU,GAAG,UAAU,MAAM;oBACjC,IAAI,IAAI,GAAG,IAAI,EACX,UAAU,GAAG,CAAC,EACd,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAC5B,mBAA6B,CAAC;oBAClC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACX,mBAAmB,GAAG,UAAU,KAAK;4BACjC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gCACR,IAAI,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gCACvC,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC;oCAC3B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gCAC3B,CAAC,CAAA;gCACD,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC;oCAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oCAChC,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gCAC9C,CAAC,CAAA;4BACL,CAAC;wBACL,CAAC,CAAA;oBACL,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,mBAAmB,GAAG,UAAU,KAAK;4BACjC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gCACR,IAAI,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gCACvC,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC;oCAC3B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gCAC3B,CAAC,CAAA;gCACD,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC;oCAC7B,EAAE,IAAI,CAAC,WAAW,CAAC;oCACnB,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gCAC9C,CAAC,CAAA;4BAEL,CAAC;wBACL,CAAC,CAAA;oBACL,CAAC;oBACD,IAAI,CAAC,WAAW,GAAG,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;oBAC5E,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChE,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;wBACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAClC,CAAC,CAAA;oBACD,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC9C,CAAC,CAAA;gBAIG,IAAI,CAAC;oBACD,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;oBACnB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;oBACvB,IAAI,KAAK,GAAG,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wBACR,EAAE,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;4BAC3B,KAAI,CAAC,UAAU,CAAC,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;4BACnC,eAAe;4BACf,KAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;wBAClC,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,KAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;4BACvD,eAAe;4BACf,KAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;wBAClC,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,IAAI,KAAK,GAAG,QAAA,KAAK,CAAC,QAAQ,CAAC,QAAA,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;wBAC9E,QAAA,UAAU,CAAC,KAAK,CAAC,CAAC;oBACtB,CAAC;gBACL,CAAC;gBACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACR,KAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC;;YACL,CAAC;YACL,aAAC;QAAD,CAAC,AAvED,CAA4B,SAAA,YAAY,GAuEvC;QAvEY,eAAM,SAuElB,CAAA;IACL,CAAC,EAzEa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAyErB;AACL,CAAC,EA3EM,OAAO,KAAP,OAAO,QA2Eb;AC3ED,IAAO,OAAO,CA6Cb;AA7CD,WAAO,OAAO;IACV,IAAc,QAAQ,CA2CrB;IA3CD,WAAc,QAAQ;QAClB;YAAgC,8BAAI;YAqBhC,oBAAY,KAAc,EAAE,SAAmB,EAAE,OAAiB;gBAAlE,YACI,iBAAO,SAkBV;gBAvCD,oBAAc,GAAG,EAAE,CAAC;gBAEpB,iBAAW,GAAG,CAAC,CAAC;gBAET,4BAAsB,GAAG;oBAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC/E,CAAC,CAAA;gBAEO,oBAAc,GAAG;oBACrB,IAAI,IAAI,GAAG,IAAI,CAAC;oBAChB,IAAI,CAAC,WAAW,GAAG,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;oBAC5E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACjE,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;wBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrB,CAAC,CAAA;oBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK;wBACrC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAChC,CAAC,CAAC,CAAC;gBACP,CAAC,CAAA;gBAIG,IAAI,CAAC;oBACD,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;oBACnB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;oBACvB,IAAI,IAAI,GAAG,KAAI,CAAC;oBAChB,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACvC,EAAE,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,CAAC;wBACb,KAAI,CAAC,cAAc,EAAE,CAAC;oBAC1B,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,IAAI,KAAK,GAAG,QAAA,KAAK,CAAC,QAAQ,CAAC,QAAA,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;wBAC9E,QAAA,UAAU,CAAC,KAAK,CAAC,CAAC;oBACtB,CAAC;gBACL,CAAC;gBACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACR,KAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC;;YACL,CAAC;YACL,iBAAC;QAAD,CAAC,AAzCD,CAAgC,SAAA,IAAI,GAyCnC;QAzCY,mBAAU,aAyCtB,CAAA;IACL,CAAC,EA3Ca,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA2CrB;AACL,CAAC,EA7CM,OAAO,KAAP,OAAO,QA6Cb;AC7CD,IAAO,OAAO,CAgDb;AAhDD,WAAO,OAAO;IACV,IAAc,QAAQ,CA8CrB;IA9CD,WAAc,QAAQ;QAClB;YACI,gBAAY,SAAS,EAAE,SAAmB,EAAE,OAAiB;gBACzD,EAAE,CAAC,CAAC,SAAA,cAAc,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,SAAA,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,EAC1D,IAAI,GAAG,IAAI,CAAC;oBAChB,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK;wBAC/B,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;4BAClB,OAAO,CAAE,KAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBACzC,CAAC;oBACL,CAAC,CAAC;oBAEF,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK;wBACjC,QAAA,MAAM,CAAC,SAAS,GAAG,QAAA,gBAAgB,CAAC,SAAS,CAAC;wBAC9C,SAAA,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;wBAChC,SAAA,YAAY,CAAC,OAAO,GAAG;4BACnB,QAAA,MAAM,CAAC,SAAS,GAAG,QAAA,gBAAgB,CAAC,MAAM,CAAC;4BAC3C,QAAA,MAAM,CAAC,SAAS,GAAG,wCAAwC,CAAC;wBAChE,CAAC,CAAA;wBAED,SAAA,YAAY,CAAC,eAAe,GAAG,UAAU,CAAC;4BACtC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC;gCACxB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,0CAA0C;4BAChE,CAAC;wBACL,CAAC,CAAC;wBAEF,SAAA,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC;4BAC9B,QAAA,MAAM,CAAC,SAAS,GAAG,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;wBACzE,CAAC,CAAA;wBAED,SAAA,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC;4BAC9B,QAAA,MAAM,CAAC,SAAS,GAAG,QAAA,gBAAgB,CAAC,MAAM,CAAC;4BAC3C,QAAA,MAAM,CAAC,SAAS,GAAG,oBAAoB,CAAC;wBAC5C,CAAC,CAAA;wBAED,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC;4BACpB,SAAS,EAAE,CAAC;wBAChB,CAAC;oBACL,CAAC,CAAC;gBACN,CAAC;gBACD,IAAI,CAAC,CAAC;oBACF,IAAI,KAAK,GAAG,gCAAgC,CAAC;oBAC7C,QAAA,UAAU,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;YACL,CAAC;YACL,aAAC;QAAD,CAAC,AA5CD,IA4CC;QA5CY,eAAM,SA4ClB,CAAA;IACL,CAAC,EA9Ca,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA8CrB;AACL,CAAC,EAhDM,OAAO,KAAP,OAAO,QAgDb;AChDD,IAAO,OAAO,CA6Bb;AA7BD,WAAO,OAAO;IACV,IAAc,QAAQ,CA2BrB;IA3BD,WAAc,QAAQ;QAClB;YAA2B,yBAAI;YAC3B,eAAY,SAAiB,EAAE,SAAmB,EAAE,OAAiB;gBAArE,YACI,iBAAO,SAsBV;gBArBG,IAAI,IAAI,GAAG,KAAI,EACX,WAAW,GAAmB,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EACrG,YAAY,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;gBAEzC,YAAY,CAAC,SAAS,GAAG,UAAU,CAAC;oBAChC,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC5C,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,MAAc;wBACjD,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;4BACvB,QAAQ,CAAC,MAAM,CAAC,UAAU,GAAG,SAAA,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;wBACvG,CAAC;oBACL,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC;wBACpB,SAAS,EAAE,CAAC;oBAChB,CAAC;gBACL,CAAC,CAAA;gBAED,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC;oBAC9B,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;wBAClB,OAAO,EAAE,CAAC;oBACd,CAAC;gBACL,CAAC,CAAA;;YACL,CAAC;YACL,YAAC;QAAD,CAAC,AAzBD,CAA2B,SAAA,IAAI,GAyB9B;QAzBY,cAAK,QAyBjB,CAAA;IACL,CAAC,EA3Ba,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA2BrB;AACL,CAAC,EA7BM,OAAO,KAAP,OAAO,QA6Bb;AC5BD,IAAO,OAAO,CA+Mb;AA/MD,WAAO,OAAO;IACV,IAAc,QAAQ,CA6MrB;IA7MD,WAAc,QAAQ;QAKlB;YAEI,cAAY,SAAgB;gBAAhB,0BAAA,EAAA,gBAAgB;gBAIrB,mCAA8B,GAAG,UAAU,OAA0B;oBACxE,EAAE,CAAC,CAAC,QAAA,SAAS,CAAC,CAAC,CAAC;wBACZ,OAAO,CAAC,GAAG,CAAC,4CAA4C,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC7E,CAAC;oBACD,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;wBACnB,KAAK,WAAW,CAAC;wBACjB,KAAK,SAAS;4BACV,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;4BAC3B,KAAK,CAAC;wBACV,KAAK,mBAAmB;4BACpB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;wBAClC;4BACI,MAAM,CAAC,CAAC,QAAA,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gCACvB,KAAK,QAAA,gBAAgB,CAAC,SAAS;oCAAE,CAAC;wCAC9B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oCAC/B,CAAC;oCAAA,CAAC;oCAAC,KAAK,CAAC;gCACT,KAAK,QAAA,gBAAgB,CAAC,MAAM;oCAAE,CAAC;wCAC3B,IAAI,IAAI,GAAG,IAAI,CAAC;wCAChB,IAAI,CAAC,MAAM,CAAC,SAAA,cAAc,CAAC,IAAI,EAAE;4CAC7B,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;wCACjD,CAAC,CAAC,CAAC;oCACP,CAAC;oCAAA,CAAC;oCAAC,KAAK,CAAC;4BACb,CAAC;oBACT,CAAC;gBACL,CAAC,CAAA;gBAEO,oBAAe,GAAG,UAAU,OAAO;oBACvC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;wBACpC,QAAA,SAAS,GAAG,IAAI,CAAC;oBACrB,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,QAAA,SAAS,GAAG,KAAK,CAAC;oBACtB,CAAC;gBACL,CAAC,CAAA;gBAEO,iBAAY,GAAG,UAAU,MAAM;oBACnC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;wBACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC3B,CAAC;oBACD,IAAI,CAAC,CAAC;wBACD,IAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBACtC,CAAC;gBACL,CAAC,CAAA;gBAEO,iBAAY,GAAG,UAAU,OAA0B;oBACvD,IAAI,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,UAAU,OAAO;wBACzB,IAAI,CAAC,YAAY,CAAmB;4BAChC,aAAa,EAAE,OAAO;yBACzB,CAAC,CAAC;oBACP,CAAC,EACD,OAAO,GAAG,UAAU,GAAG;wBACnB,IAAI,CAAC,YAAY,CAAmB;4BAChC,YAAY,EAAE,IAAI;4BAClB,YAAY,EAAE,GAAG;yBACpB,CAAC,CAAC;oBACP,CAAC,CAAA;oBAEL,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;wBACnB,KAAK,QAAQ;4BACT,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BAC/C,KAAK,CAAC;wBACV,KAAK,QAAQ;4BAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BAC1D,KAAK,CAAC;wBACV,KAAK,QAAQ;4BAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BAC1D,KAAK,CAAC;wBACV,KAAK,QAAQ;4BAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BAC1D,KAAK,CAAC;wBACV,KAAK,SAAS;4BAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BAC3D,KAAK,CAAC;wBACV,KAAK,WAAW;4BAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BAC/D,KAAK,CAAC;wBACV,KAAK,OAAO;4BAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BACxD,KAAK,CAAC;wBACV,KAAK,SAAS;4BAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;4BAC5C,KAAK,CAAC;wBACV,KAAK,OAAO;4BAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BACxD,KAAK,CAAC;wBACV,KAAK,aAAa;4BAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BACnE,KAAK,CAAC;wBACV,KAAK,aAAa;4BAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BACnE,KAAK,CAAC;wBACV,SAAS,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAC,CAAC;oBAC5E,CAAC;gBACL,CAAC,CAAA;gBAED,WAAM,GAAG,UAAU,MAAM,EAAE,SAAmB,EAAE,OAAiB;oBAC7D,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,GAAG,aAAa,EAAE,UAAU,SAAS;wBACjE,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC;4BACpB,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,GAAG,SAAS,EAAE,UAAU,MAAM;gCAC1D,SAAA,cAAc,GAAG,MAAM,CAAC;gCACxB,IAAI,SAAA,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;4BAC9C,CAAC,CAAC,CAAC;wBACP,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,KAAK,GAAG,QAAA,KAAK,CAAC,QAAQ,CAAC,QAAA,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;4BACrE,MAAM,KAAK,CAAC;wBAChB,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC,CAAA;gBAEM,YAAO,GAAG;oBACb,EAAE,CAAC,CAAC,QAAA,MAAM,CAAC,SAAS,IAAI,QAAA,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;wBACjD,SAAA,YAAY,CAAC,KAAK,EAAE,CAAC;oBACzB,CAAC;gBACL,CAAC,CAAA;gBAEM,WAAM,GAAG,UAAU,SAAmB,EAAE,OAAiB;oBAC5D,IAAI,SAAA,MAAM,CAAC,SAAA,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBACxD,CAAC,CAAA;gBAEM,WAAM,GAAG,UAAU,KAAc,EAAE,SAAmB,EAAE,OAAiB;oBAC5E,IAAI,SAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBACnD,CAAC,CAAA;gBAEM,WAAM,GAAG,UAAU,KAAc,EAAE,SAAmB,EAAE,OAAiB;oBAC5E,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBAC/B,QAAA,UAAU,CAAC,sDAAsD,CAAC,CAAC;oBACvE,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,IAAI,SAAA,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;oBAC1C,CAAC;gBACL,CAAC,CAAA;gBAEM,eAAU,GAAG,UAAU,KAAc,EAAE,SAAmB,EAAE,OAAiB;oBAChF,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBAC/B,QAAA,UAAU,CAAC,sDAAsD,CAAC,CAAC;oBACvE,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,IAAI,SAAA,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;oBAC9C,CAAC;gBACL,CAAC,CAAA;gBAEM,WAAM,GAAG,UAAU,KAAc,EAAE,SAAmB,EAAE,OAAiB;oBAC5E,IAAI,SAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBACnD,CAAC,CAAA;gBAEM,WAAM,GAAG,UAAU,KAAK,EAAE,SAAmB,EAAE,OAAiB;oBACnE,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACjC,IAAI,SAAA,MAAM,CAAC,IAAI,CAAc,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;oBAC5D,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,IAAI,SAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;oBACnD,CAAC;gBACL,CAAC,CAAA;gBAEM,UAAK,GAAG,UAAU,KAAK,EAAE,SAAmB,EAAE,OAAiB;oBAClE,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACjC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;wBACtB,IAAI,SAAA,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;oBAC/C,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,IAAI,SAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;oBAClD,CAAC;gBACL,CAAC,CAAA;gBAEM,aAAQ,GAAG,UAAU,QAAyB,EAAE,SAAmB,EAAE,OAAiB;oBACzF,IAAI,IAAI,GAAG,IAAI,CAAC;oBAChB,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,GAAG,aAAa,EAAE,UAAU,OAAO;wBACtE,QAAA,SAAS,GAAG,OAAO,CAAC;wBACpB,SAAA,cAAc,GAAG,IAAI,QAAA,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBAC9C,IAAI,gBAAgB,GAAG;4BACnB,UAAU,CAAC;gCACP,IAAI,SAAS,GAAkB,SAAA,cAAc,CAAC,MAAM,CAAC,SAAA,cAAc,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;gCACxF,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,SAAA,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG,UAAU,EAAE,UAAU,OAAO;oCAChG,EAAE,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;wCAC/B,IAAI,SAAA,QAAQ,CAAC,QAAA,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;oCAC/C,CAAC;oCACD,IAAI,CAAC,CAAC;wCACF,gBAAgB,EAAE,CAAC;oCACvB,CAAC;gCACL,CAAC,CAAC,CAAC;4BACP,CAAC,EAAE,GAAG,CAAC,CAAC;wBACZ,CAAC,CAAA;wBACD,gBAAgB,EAAE,CAAC;oBACvB,CAAC,CAAC,CAAC;gBAEP,CAAC,CAAA;gBAEM,UAAK,GAAG,UAAU,SAAiB,EAAE,SAAmB,EAAE,OAAiB;oBAC9E,IAAI,SAAA,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC7C,CAAC,CAAA;gBAEM,eAAU,GAAG,UAAU,KAAc,EAAE,SAAmB,EAAE,OAAiB;oBAChF,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,OAAO;wBAChC,IAAI,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE;4BAC9D,IAAI,EAAE,WAAW;yBACpB,CAAC,CAAC,CAAC;wBACJ,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,CAAC,EAAE,UAAU,GAAG;wBACZ,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjB,CAAC,CAAC,CAAC;gBACP,CAAC,CAAA;gBAnMG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC/B,CAAC;YAmML,WAAC;QAAD,CAAC,AAvMD,IAuMC;QAvMY,aAAI,OAuMhB,CAAA;IACL,CAAC,EA7Ma,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA6MrB;AACL,CAAC,EA/MM,OAAO,KAAP,OAAO,QA+Mb;AChND,IAAO,OAAO,CA6Bb;AA7BD,WAAO,OAAO;IACV,IAAc,QAAQ,CA2BrB;IA3BD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAyBnB;QAzBD,WAAc,MAAM;YAChB;gBAAgC,8BAAI;gBAApC;oBAAA,qEAuBC;oBAtBG,aAAO,GAAG,EAAE,CAAC;oBACb,YAAM,GAAY,KAAK,CAAC;oBAGxB,eAAS,GAAG,KAAK,CAAC;oBAER,sBAAgB,GAAG;wBACzB,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;wBACzB,qBAAqB;wBACrB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;wBACzB,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC9C,IAAI,YAAY,GAAG,EAAE,CAAC;wBACtB,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;4BAClB,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC3C,CAAC;wBACD,mBAAmB;wBACnB,KAAK,GAAG,EAAE,CAAC;wBACX,GAAG,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC;4BACrB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;wBAChC,CAAC;wBACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACzB,CAAC,CAAC;;gBACN,CAAC;gBAAD,iBAAC;YAAD,CAAC,AAvBD,CAAgC,SAAA,IAAI,GAuBnC;YAvBY,iBAAU,aAuBtB,CAAA;QACL,CAAC,EAzBa,MAAM,GAAN,eAAM,KAAN,eAAM,QAyBnB;IACL,CAAC,EA3Ba,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA2BrB;AACL,CAAC,EA7BM,OAAO,KAAP,OAAO,QA6Bb;AC7BD,IAAO,OAAO,CAmGb;AAnGD,WAAO,OAAO;IACV,IAAc,QAAQ,CAiGrB;IAjGD,WAAc,QAAQ;QAClB,IAAc,MAAM,CA8FnB;QA9FD,WAAc,MAAM;YAChB;gBAA8B,4BAAU;gBAAxC;oBAAA,qEA4FC;oBA3Fa,gCAA0B,GAAG;wBACnC,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,EACX,iBAAiB,EACjB,mBAAmB,GAAG;4BAClB,IAAI,aAAa,GAAG,KAAK,CAAC;4BAC1B,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;wCAC3D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wCAChC,MAAM,CAAC,QAAQ,EAAE,CAAC;oCACtB,CAAC;oCACD,IAAI,CAAC,CAAC;wCACF,aAAa,GAAG,IAAI,CAAC;wCACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oCACpC,CAAC;gCACL,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC,EACD,WAAW,GAAG;4BACV,IAAI,aAAa,GAAG,KAAK,CAAC;4BAC1B,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;wCAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wCAChC,MAAM,CAAC,QAAQ,EAAE,CAAC;oCACtB,CAAC;oCACD,IAAI,CAAC,CAAC;wCACF,aAAa,GAAG,IAAI,CAAC;wCACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oCACpC,CAAC;gCACL,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC,EACD,aAAa,GAAG;4BACZ,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oCAC/B,MAAc,CAAC,QAAQ,EAAE,CAAC;gCAC/B,CAAC;4BAEL,CAAC,CAAA;wBACL,CAAC,EACD,YAAY,GAAG;4BACX,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;oCACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oCAChC,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC,CAAC;wBAEN,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC1C,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gCAC5D,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;gCACzG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gCACnB,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;4BAChG,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,IAAI,KAAK,GAAG,QAAA,KAAK,CAAC,QAAQ,CAAC,QAAA,SAAS,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gCAC1F,QAAA,UAAU,CAAC,KAAK,CAAC,CAAC;4BACtB,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;wBACtD,CAAC;wBAED,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;4BACtC,mBAAmB,EAAE,CAAC;wBAC1B,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;4BACvB,WAAW,EAAE,CAAC;wBAClB,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;4BACxB,YAAY,EAAE,CAAC;wBACnB,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,aAAa,EAAE,CAAC;wBACpB,CAAC;wBAED,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;oBAEL,CAAC,CAAA;;gBAEL,CAAC;gBAAD,eAAC;YAAD,CAAC,AA5FD,CAA8B,OAAA,UAAU,GA4FvC;YA5FY,eAAQ,WA4FpB,CAAA;QACL,CAAC,EA9Fa,MAAM,GAAN,eAAM,KAAN,eAAM,QA8FnB;IAEL,CAAC,EAjGa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAiGrB;AACL,CAAC,EAnGM,OAAO,KAAP,OAAO,QAmGb;ACnGD,IAAO,OAAO,CA2Nb;AA3ND,WAAO,OAAO;IACV,IAAc,QAAQ,CAyNrB;IAzND,WAAc,QAAQ;QAClB,IAAc,MAAM,CAuNnB;QAvND,WAAc,MAAM;YAChB;gBAAwB,sBAAQ;gBAAhC;oBAAA,qEAqNC;oBAnNW,8BAAwB,GAAG,UAAU,MAAM,EAAE,MAAM;wBACvD,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,CAAC,UAAU,EACtB,IAAI,GAAG,IAAI,EACX,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAC5C,UAAU,GAAG,UAAU,KAAK;4BACxB,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gCACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAC7B,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,EAAE,IAAI,CAAC;4BACX,CAAC;wBACL,CAAC,CAAC;wBACN,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCAC7E,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;wCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAChC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC;4CACpD,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gDACjD,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4CAC7B,CAAC;4CACD,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;oCACL,CAAC,CAAA;oCACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;wCACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oCAC3B,CAAC,CAAA;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCAC7E,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;wCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAChC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC;4CACpD,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4CACzB,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;oCACL,CAAC,CAAA;oCACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;wCACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oCAC3B,CAAC,CAAA;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;oBACL,CAAC,CAAA;oBAEO,sBAAgB,GAAG,UAAU,MAAM,EAAE,MAAM;wBAC/C,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,CAAC,UAAU,EACtB,IAAI,GAAG,IAAI,EACX,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAC5C,UAAU,GAAG,UAAU,KAAK;4BACxB,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gCACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAC7B,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,EAAE,IAAI,CAAC;4BACX,CAAC;wBACL,CAAC,CAAC;wBACN,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCAC7E,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;wCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;4CACT,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gDACjD,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;4CAC/B,CAAC;4CACD,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;oCACL,CAAC,CAAA;oCACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;wCACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oCAC3B,CAAC,CAAA;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCAC7E,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;wCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;4CACT,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;4CAC3B,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;oCACL,CAAC,CAAA;oCACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;wCACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oCAC3B,CAAC,CAAA;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;oBAEL,CAAC,CAAA;oBAEO,uBAAiB,GAAG,UAAU,MAAM,EAAE,MAAM;wBAChD,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,EACX,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBACjD,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCAC7E,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;wCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAChC,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;4CACpD,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gDACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4CACpC,CAAC;4CACD,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;oCACL,CAAC,CAAA;oCACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;wCACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oCAC3B,CAAC,CAAA;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCAC7E,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;wCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAChC,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;4CACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4CAChC,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;oCACL,CAAC,CAAA;oCACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;wCACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oCAC3B,CAAC,CAAA;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;oBAEL,CAAC,CAAA;oBAEO,wBAAkB,GAAG,UAAU,MAAM,EAAE,MAAM;wBACjD,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,EACX,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBACjD,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCAC7E,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;wCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;4CACT,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gDACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4CACpC,CAAC;4CACD,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;oCACL,CAAC,CAAA;oCACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;wCACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oCAC3B,CAAC,CAAA;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCAC7E,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;wCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;4CACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4CAChC,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;oCACL,CAAC,CAAA;oCACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;wCACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oCAC3B,CAAC,CAAA;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;oBAEL,CAAC,CAAA;oBAES,oBAAc,GAAG,UAAU,MAAM,EAAE,MAAM;wBAC/C,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;4BACtC,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAClD,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;4BACvB,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAC1C,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;4BACxB,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAC3C,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAC5C,CAAC;oBACL,CAAC,CAAA;;gBACL,CAAC;gBAAD,SAAC;YAAD,CAAC,AArND,CAAwB,OAAA,QAAQ,GAqN/B;YArNY,SAAE,KAqNd,CAAA;QACL,CAAC,EAvNa,MAAM,GAAN,eAAM,KAAN,eAAM,QAuNnB;IACL,CAAC,EAzNa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAyNrB;AACL,CAAC,EA3NM,OAAO,KAAP,OAAO,QA2Nb;AC3ND,IAAO,OAAO,CAsLb;AAtLD,WAAO,OAAO;IACV,IAAc,QAAQ,CAoLrB;IApLD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAkLnB;QAlLD,WAAc,MAAM;YAChB;gBAA0B,wBAAE;gBAA5B;oBAAA,qEAgLC;oBA3KW,uBAAiB,GAAG,UAAU,KAAK;wBACvC,IAAI,KAAK,GAAG,KAAK,EACb,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;wBAC7C,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;4BACtB,KAAK,QAAA,SAAS,CAAC,GAAG;gCAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oCACzD,KAAK,GAAG,IAAI,CAAC;gCACjB,CAAC;gCAAA,CAAC;gCAAC,KAAK,CAAC;4BACT,KAAK,QAAA,SAAS,CAAC,KAAK;gCAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oCAC3D,KAAK,GAAG,IAAI,CAAC;gCACjB,CAAC;gCAAA,CAAC;gCAAC,KAAK,CAAC;4BACT;gCAAS,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;oCACpF,KAAK,GAAG,IAAI,CAAC;gCACjB,CAAC;gCAAA,CAAC;wBACN,CAAC;wBACD,MAAM,CAAC,KAAK,CAAC;oBACjB,CAAC,CAAA;oBAEO,yBAAmB,GAAG;wBAC1B,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,CAAC,UAAU,EACtB,IAAI,GAAG,IAAI,EACX,UAAU,GAAG,UAAU,KAAK;4BACxB,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gCACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAC7B,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,EAAE,IAAI,CAAC;4BACX,CAAC;wBACL,CAAC,CAAC;wBACN,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC;oCACpD,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC;wCACpC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACjD,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oCAC7B,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC;oCACpD,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACvC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oCAC7B,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;oBACL,CAAC,CAAA;oBAEO,iBAAW,GAAG;wBAClB,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,CAAC,UAAU,EACtB,IAAI,GAAG,IAAI,EACX,UAAU,GAAG,UAAU,KAAK;4BACxB,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gCACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAC7B,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,EAAE,IAAI,CAAC;4BACX,CAAC;wBACL,CAAC,CAAC;wBACN,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC;wCACpC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACjD,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oCAC/B,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACvC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oCAC/B,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;oBACL,CAAC,CAAA;oBAEO,kBAAY,GAAG;wBACnB,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,CAAC;wBAChB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC;oCACpD,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC;wCACpC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oCACpC,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC;oCACpD,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oCACpC,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;oBACL,CAAC,CAAA;oBAEO,mBAAa,GAAG;wBACpB,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,CAAC;wBAChB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC;wCACpC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oCACpC,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oCACpC,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;oBACL,CAAC,CAAA;oBAES,sBAAgB,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE,MAAiB;wBACnE,IAAI,IAAI,GAAG,IAAI,CAAC;wBAChB,IAAI,CAAC,SAAS,GAAY,KAAM,CAAC,WAAW,EAAE,CAAC;wBAC/C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;wBAC7C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;wBACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;wBACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;wBACrE,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;wBACD,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;4BACtC,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBAC/B,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;4BACvB,IAAI,CAAC,WAAW,EAAE,CAAC;wBACvB,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;4BACxB,IAAI,CAAC,YAAY,EAAE,CAAC;wBACxB,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,CAAC,aAAa,EAAE,CAAC;wBACzB,CAAC;oBACL,CAAC,CAAA;;gBACL,CAAC;gBAAD,WAAC;YAAD,CAAC,AAhLD,CAA0B,OAAA,EAAE,GAgL3B;YAhLY,WAAI,OAgLhB,CAAA;QACL,CAAC,EAlLa,MAAM,GAAN,eAAM,KAAN,eAAM,QAkLnB;IACL,CAAC,EApLa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAoLrB;AACL,CAAC,EAtLM,OAAO,KAAP,OAAO,QAsLb;ACtLD,IAAO,OAAO,CAkJb;AAlJD,WAAO,OAAO;IACV,IAAc,QAAQ,CAgJrB;IAhJD,WAAc,QAAQ;QAClB,IAAc,MAAM,CA8InB;QA9ID,WAAc,MAAM;YAChB;gBAA2B,yBAAI;gBAA/B;oBAAA,qEA4IC;oBA3IW,uBAAiB,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE,EAAE;wBACnD,IAAI,IAAI,GAAG,IAAI,EACX,iBAAiB,EACjB,MAA0B,EAC1B,mBAAmB,GAAG;4BAClB,IAAI,aAAa,GAAG,KAAK,CAAC;4BAC1B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gCACjB,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;oCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;oCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;wCACT,EAAE,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;4CAC3D,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gDACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4CACpC,CAAC;4CACD,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;wCACD,IAAI,CAAC,CAAC;4CACF,aAAa,GAAG,IAAI,CAAC;4CACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wCACpC,CAAC;oCACL,CAAC;gCACL,CAAC,CAAA;4BACL,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;oCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;oCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;wCACT,EAAE,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;4CAC3D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4CAChC,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;wCACD,IAAI,CAAC,CAAC;4CACF,aAAa,GAAG,IAAI,CAAC;4CACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wCACpC,CAAC;oCACL,CAAC;gCACL,CAAC,CAAA;4BACL,CAAC;wBACL,CAAC,EACD,WAAW,GAAG;4BACV,IAAI,aAAa,GAAG,KAAK,CAAC;4BAC1B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gCACjB,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;oCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;oCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;wCACT,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;4CAChB,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gDACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4CACpC,CAAC;4CACD,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;wCACD,IAAI,CAAC,CAAC;4CACF,aAAa,GAAG,IAAI,CAAC;4CACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wCACpC,CAAC;oCACL,CAAC;gCACL,CAAC,CAAA;4BACL,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;oCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;oCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;wCACT,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;4CAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4CAChC,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;wCACD,IAAI,CAAC,CAAC;4CACF,aAAa,GAAG,IAAI,CAAC;4CACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wCACpC,CAAC;oCACL,CAAC;gCACL,CAAC,CAAA;4BACL,CAAC;wBACL,CAAC,EACD,YAAY,GAAG;4BACX,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gCACjB,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;oCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;oCAChC,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACtG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wCAChC,MAAM,CAAC,QAAQ,EAAE,CAAC;oCACtB,CAAC;gCACL,CAAC,CAAA;4BACL,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;oCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;oCAChC,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;wCACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wCAChC,MAAM,CAAC,QAAQ,EAAE,CAAC;oCACtB,CAAC;gCACL,CAAC,CAAA;4BACL,CAAC;wBACL,CAAC,EACD,aAAa,GAAG;4BACZ,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gCACjB,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;oCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;oCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;wCACT,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;4CACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wCACpC,CAAC;wCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;oCACtB,CAAC;gCACL,CAAC,CAAA;4BACL,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;oCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;oCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;wCACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wCAChC,MAAM,CAAC,QAAQ,EAAE,CAAC;oCACtB,CAAC;gCAEL,CAAC,CAAA;4BACL,CAAC;wBACL,CAAC,CAAC;wBAEN,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;wBAC/B,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;wBAE3F,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;wBAED,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;4BACtC,mBAAmB,EAAE,CAAC;wBAC1B,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;4BACvB,WAAW,EAAE,CAAC;wBAClB,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;4BACxB,YAAY,EAAE,CAAC;wBACnB,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,aAAa,EAAE,CAAC;wBACpB,CAAC;oBACL,CAAC,CAAA;;gBACL,CAAC;gBAAD,YAAC;YAAD,CAAC,AA5ID,CAA2B,OAAA,IAAI,GA4I9B;YA5IY,YAAK,QA4IjB,CAAA;QACL,CAAC,EA9Ia,MAAM,GAAN,eAAM,KAAN,eAAM,QA8InB;IACL,CAAC,EAhJa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAgJrB;AACL,CAAC,EAlJM,OAAO,KAAP,OAAO,QAkJb;AClJD,IAAO,OAAO,CAuSb;AAvSD,WAAO,OAAO;IACV,IAAc,QAAQ,CAqSrB;IArSD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAmSnB;QAnSD,WAAc,MAAM;YAChB;gBAA0B,wBAAU;gBAoPhC,cAAY,KAAkB,EAAE,SAAmB,EAAE,OAAiB;oBAAtE,YACI,iBAAO,SAyCV;oBA5RD,gBAAU,GAAsB,EAAE,CAAC;oBACnC,4BAAsB,GAAG,CAAC,CAAC;oBAEnB,4BAAsB,GAAG,UAAU,CAAC;wBACxC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;4BACxF,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gCACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;4BACxC,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oCAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oCAC3C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gCACtE,CAAC;gCACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oCAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gCAC/C,CAAC;gCACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oCAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gCACtE,CAAC;gCACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;4BACjC,CAAC;wBAEL,CAAC;oBACL,CAAC,CAAA;oBAEO,2BAAqB,GAAG,UAAU,SAAqB,EAAE,KAAiB;wBAC9E,IAAI,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,EAAE,EACZ,SAAS,GAAG,CAAC,EACb,MAAM,GAAG,KAAK,CAAC,MAAM,EACrB,UAAU,GAAG,IAAI,CAAC,OAAO,EACzB,IAAI,EACJ,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;wBAErC,+BAA+B;wBAC/B,IAAI,MAAM,CAAC,QAAQ,CAAU;4BACzB,IAAI,EAAE,KAAK,CAAC,KAAK;4BACjB,KAAK,EAAE,KAAK,CAAC,KAAK;4BAClB,KAAK,EAAE,KAAK,CAAC,KAAK;yBACrB,EAAE,UAAU,OAAO;4BAChB,cAAc;4BACd,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE,KAAK;gCAClC,wCAAwC;gCACxC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;oCACpC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oCACxD,oCAAoC;oCACpC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;oCACvB,GAAG;gCACP,CAAC;4BACL,CAAC,CAAC,CAAC;4BACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;4BACvB,mCAAmC;4BACnC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC,CAAC;gCAC3D,IAAI,CAAC,uBAAuB,EAAE,CAAC;4BACnC,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;4BACtC,CAAC;wBAEL,CAAC,EAAE,UAAU,KAAK;4BACd,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBAC/B,CAAC,CAAC,CAAC;wBAEH,IAAI,MAAM,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE,SAAS;4BAC5C,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;4BACxB,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gCACjC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;gCACzC,8CAA8C;gCAC9C,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;oCACnD,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gCACnG,CAAC;gCACD,EAAE,SAAS,CAAC;4BAChB,CAAC;4BACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC;gCAChC,WAAW;gCACX,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gCACxB,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gCACvC,8CAA8C;gCAC9C,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;oCACnD,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gCACnG,CAAC;gCACD,+EAA+E;gCAC/E,EAAE,SAAS,CAAC;4BAChB,CAAC;wBACL,CAAC,CAAA;oBAEL,CAAC,CAAA;oBAEO,sBAAgB,GAAG,UAAU,SAAqB,EAAE,KAAiB;wBACzE,IAAI,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,EAAE,EACZ,SAAS,GAAG,CAAC,EACb,MAAM,GAAG,KAAK,CAAC,MAAM,EACrB,UAAU,GAAG,IAAI,CAAC,OAAO,EACzB,IAAI,EACJ,YAAY,GAAG,UAAU,CAAC,MAAM,EAChC,SAAS,GAAG,CAAC,EACb,KAAK,GAAG,EAAE,EACV,mBAAmB,GAAG;4BAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;4BACvB,mCAAmC;4BACnC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC,CAAC;gCAC3D,IAAI,CAAC,uBAAuB,EAAE,CAAC;4BACnC,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;4BACtC,CAAC;wBACL,CAAC,EACD,WAAW,GAAG,UAAU,OAAO;4BAC3B,IAAI,UAAU,GAAG,KAAK,CAAC;4BACvB,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,KAAK;gCACjC,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,YAAY,EAAE,SAAS,EAAE,EAAE,CAAC;oCACxD,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wCACjF,UAAU,GAAG,IAAI,CAAC;wCAClB,KAAK,CAAC;oCACV,CAAC;gCACL,CAAC;gCACD,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gCACpB,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gCACnC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;oCACb,UAAU,GAAG,KAAK,CAAC;oCACnB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;wCACnD,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oCAC/F,CAAC;gCACL,CAAC;gCACD,IAAI,CAAC,CAAC;oCACF,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;wCACnD,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;oCACpD,CAAC;gCACL,CAAC;4BACL,CAAC,CAAC,CAAC;wBACP,CAAC,EACD,YAAY,GAAG;4BACX,IAAI,MAAM,CAAC,QAAQ,CAAU;gCACzB,IAAI,EAAE,KAAK,CAAC,KAAK;gCACjB,KAAK,EAAE,KAAK,CAAC,KAAK;gCAClB,KAAK,EAAE,KAAK,CAAC,KAAK;6BACrB,EAAE,UAAU,OAAO;gCAChB,WAAW,CAAC,OAAO,CAAC,CAAC;gCACrB,mBAAmB,EAAE,CAAC;4BAC1B,CAAC,EAAE,UAAU,KAAK;gCACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gCACzB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;4BAC/B,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC;wBACN,YAAY,EAAE,CAAC;oBACnB,CAAC,CAAA;oBACO,uCAAiC,GAAG,UAAU,SAAqB,EAAE,KAAiB;wBAC1F,IAAI,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,EAAE,EACZ,SAAS,GAAG,CAAC,EACb,MAAM,GAAG,KAAK,CAAC,MAAM,EACrB,UAAU,GAAG,IAAI,CAAC,OAAO,EACzB,IAAI,EACJ,YAAY,GAAG,UAAU,CAAC,MAAM,EAChC,SAAS,GAAG,CAAC,EACb,KAAK,GAAG,EAAE,EACV,mBAAmB,GAAG;4BAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;4BACvB,mCAAmC;4BACnC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC,CAAC;gCAC3D,IAAI,CAAC,uBAAuB,EAAE,CAAC;4BACnC,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;4BACtC,CAAC;wBACL,CAAC,EACD,MAAM,GAAG,UAAU,OAAO;4BACtB,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gCACrB,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK;oCAC3B,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;oCACxB,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;oCACxC,8CAA8C;oCAC9C,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;wCACnD,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oCACnG,CAAC;oCACD,EAAE,SAAS,CAAC;gCAChB,CAAC,CAAC,CAAC;4BACP,CAAC;4BACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC;gCAChC,WAAW;gCACX,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gCACxB,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gCACvC,8CAA8C;gCAC9C,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;oCACnD,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gCACnG,CAAC;gCACD,+EAA+E;gCAC/E,EAAE,SAAS,CAAC;4BAChB,CAAC;wBACL,CAAC,EACD,YAAY,GAAG;4BACX,EAAE,CAAC,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC;gCAC3B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oCAC/E,IAAI,MAAM,CAAC,QAAQ,CAAU;wCACzB,IAAI,EAAE,KAAK,CAAC,KAAK;wCACjB,KAAK,EAAE,KAAK;wCACZ,KAAK,EAAE,KAAK,CAAC,KAAK;qCACrB,EAAE,UAAU,OAAO;wCAChB,MAAM,CAAC,OAAO,CAAC,CAAC;wCAChB,EAAE,SAAS,CAAC;wCACZ,YAAY,EAAE,CAAC;oCACnB,CAAC,EAAE,UAAU,KAAK;wCACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oCAC/B,CAAC,CAAC,CAAC;gCACP,CAAC;4BACL,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,mBAAmB,EAAE,CAAC;4BAC1B,CAAC;wBACL,CAAC,CAAC;wBACN,YAAY,EAAE,CAAC;oBACnB,CAAC,CAAA;oBA8BG,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;oBACvB,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;oBACnB,IAAI,IAAI,GAAG,KAAI,EACX,SAAS,GAAG,EAAE,CAAC,CAAC,yCAAyC;oBAE7D,IAAI,qBAAqB,GAAG,UAAU,KAAK;wBACvC,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;4BACjC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAW,KAAM,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,KAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;4BAC1G,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;4BACnC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gCAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;4BAC1E,CAAC;4BACD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BACnC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBAC/C,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAC5B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BAC5B,MAAM,CAAC;wBACX,CAAC;oBACL,CAAC,CAAC;oBACF,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClC,KAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;oBAC1B,8BAA8B;oBAC9B,EAAE,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC;wBACrB,IAAI,MAAM,CAAC,QAAQ,CAAU;4BACzB,IAAI,EAAE,KAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK;4BAC9B,KAAK,EAAE,KAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK;yBAClC,EAAE,UAAU,OAAO;4BAChB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;4BACzC,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,KAAK;gCACjC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gCACzB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;4BAC1C,CAAC,CAAC,CAAC;4BACH,IAAI,CAAC,uBAAuB,EAAE,CAAC;wBACnC,CAAC,EAAE,UAAU,KAAK;4BACd,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBAC/B,CAAC,CAAC,CAAC;oBACP,CAAC;;gBACL,CAAC;gBApEO,sCAAuB,GAA/B;oBACI,IAAI,SAAS,CAAC;oBACd,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAC3E,SAAS,GAAe;4BACpB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,KAAK;4BAClE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,MAAM;yBACvE,CAAA;wBACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAClC,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;oBAC/D,CAAC;oBAED,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBACzD,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;wBAC5B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC5C,CAAC;oBACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;wBACnB,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBACjD,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,IAAI,CAAC,iCAAiC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC7D,CAAC;gBAEL,CAAC;gBA+CL,WAAC;YAAD,CAAC,AAjSD,CAA0B,OAAA,UAAU,GAiSnC;YAjSY,WAAI,OAiShB,CAAA;QACL,CAAC,EAnSa,MAAM,GAAN,eAAM,KAAN,eAAM,QAmSnB;IACL,CAAC,EArSa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAqSrB;AACL,CAAC,EAvSM,OAAO,KAAP,OAAO,QAuSb;ACvSD,IAAO,OAAO,CA4Ob;AA5OD,WAAO,OAAO;IACV,IAAc,QAAQ,CA0OrB;IA1OD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAwOnB;QAxOD,WAAc,MAAM;YAChB;gBAAmC,iCAAK;gBACpC;oBAAA,YACI,iBAAO,SACV;oBAEO,6BAAuB,GAAG;wBAC9B,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,KAAK,GAAG,IAAI,CAAC,OAAO,EACpB,SAAS,GAAG,EAAE,CAAC;wBACnB,qBAAqB;wBACrB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;wBACzB,4CAA4C;wBAC5C,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;wBACxC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;wBACjC,IAAI,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;wBACrC,IAAI,kBAAkB,GAAG;4BACrB,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC;gCAC5B,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oCACX,KAAK,OAAO;wCACR,IAAI,QAAQ,GAAG;4CACX,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;4CAC1B,eAAe;4CACf,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4CACvD,kCAAkC;4CAClC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4CAC1C,MAAM,CAAC,KAAK,CAAC;wCACjB,CAAC,CAAA;wCACD,EAAE,CAAC,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;4CACxC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;4CAChC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC;wCAC3D,CAAC;wCACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;4CACzC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gDAClC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;gDACtC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC;4CAC3D,CAAC;wCACL,CAAC;wCACD,KAAK,CAAC;oCACV,KAAK,KAAK;wCACN,IAAI,MAAM,GAAG;4CACT,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;4CAC1B,eAAe;4CACf,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4CACrD,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4CACnF,yCAAyC;4CACzC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;wCAC/E,CAAC,CAAA;wCAED,EAAE,CAAC,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;4CACxC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;4CAChC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;wCACvD,CAAC;wCACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;4CACzC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gDAClC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;gDACtC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;4CACvD,CAAC;wCACL,CAAC;wCACD,KAAK,CAAC;oCACV,KAAK,KAAK;wCACN,IAAI,MAAM,GAAG;4CACT,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;4CAC1B,eAAe;4CACf,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;4CAC5D,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;4CAC1F,yCAAyC;4CACzC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;wCAC/E,CAAC,CAAA;wCAED,EAAE,CAAC,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;4CACxC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;4CAChC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;wCACvD,CAAC;wCACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;4CACzC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gDAClC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;gDACtC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;4CACvD,CAAC;wCACL,CAAC;wCACD,KAAK,CAAC;oCACV,KAAK,KAAK;wCACN,IAAI,MAAM,GAAG;4CACT,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;4CAC1B,eAAe;4CACf,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4CACrD,kCAAkC;4CAClC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4CACjE,MAAM,CAAC,KAAK,CAAC;wCACjB,CAAC,CAAA;wCACD,EAAE,CAAC,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;4CACxC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;4CAChC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;wCACvD,CAAC;wCACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;4CACzC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gDAClC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;gDACtC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;4CACvD,CAAC;wCACL,CAAC;wCACD,KAAK,CAAC;oCACV,KAAK,KAAK;wCACN,IAAI,MAAM,GAAG;4CACT,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;4CAC1B,mBAAmB;4CACnB,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4CACvD,kCAAkC;4CAClC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4CAC/D,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;4CAC9C,qBAAqB;4CACrB,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4CACvD,kCAAkC;4CAClC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4CAC1C,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;wCACtD,CAAC,CAAA;wCAED,EAAE,CAAC,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;4CACxC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;4CAChC,MAAM,EAAE,CAAC;wCACb,CAAC;wCACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;4CACzC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gDAClC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;gDACtC,MAAM,EAAE,CAAC;4CACb,CAAC;wCACL,CAAC;wCACD,KAAK,CAAC;gCACd,CAAC;4BACL,CAAC;wBACL,CAAC,CAAA;wBAED,EAAE,CAAC,CAAC,OAAO,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC;4BAC5B,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;gCAClB,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;gCAC9B,kBAAkB,EAAE,CAAC;gCACrB,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;4BACrC,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;gCAClB,MAAM,GAAG,EAAE,CAAC;gCACZ,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;oCACxB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gCAC3C,CAAC;gCACD,kBAAkB,EAAE,CAAC;gCACrB,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;4BACrC,CAAC;wBAEL,CAAC;wBACD,mBAAmB;wBACnB,KAAK,GAAG,EAAE,CAAC;wBACX,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;4BACtB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7B,CAAC;wBACD,oDAAoD;wBACpD,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;4BACnB,EAAE,CAAC,CAAC,OAAO,YAAY,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC;gCACtC,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;oCAClB,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,EACnD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;oCAC5D,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;oCAC5D,EAAE,CAAC,CAAC,YAAY,CAAC,KAAK,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;wCAC1C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;oCAC3D,CAAC;oCACD,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;wCACxC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;oCACzD,CAAC;gCACL,CAAC;4BACL,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,IAAI,iBAAiB,GAAG,OAAO,YAAY,CAAC,KAAK,EAC7C,eAAe,GAAG,OAAO,YAAY,CAAC,KAAK,CAAC;gCAChD,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;oCAClB,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;wCAClC,IAAI,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EACpC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,EAC5C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;wCACrD,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;wCAErD,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;4CACpB,EAAE,CAAC,CAAC,YAAY,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC;gDACnC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;4CACpD,CAAC;4CACD,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gDACnD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;4CACpD,CAAC;wCACL,CAAC;wCAED,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;4CAClB,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC;gDACjC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;4CAClD,CAAC;4CACD,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gDACjD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;4CAClD,CAAC;wCACL,CAAC;oCACL,CAAC;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACzB,CAAC,CAAC;oBAEQ,oBAAc,GAAG;wBACvB,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,KAAK,GAAG,IAAI,CAAC,OAAO,EACpB,SAAS,GAAG,EAAE,CAAC;wBACnB,qBAAqB;wBACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;wBAC9C,EAAE,CAAC,CAAC,OAAO,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC;4BAC5B,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;gCAClB,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;4BAC3C,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,MAAM,CAAC;4BACX,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;gCAClB,MAAM,GAAG,EAAE,CAAC;gCACZ,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;oCACxB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gCACvC,CAAC;gCACD,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;4BACjC,CAAC;wBACL,CAAC;wBACD,mBAAmB;wBACnB,KAAK,GAAG,EAAE,CAAC;wBACX,GAAG,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;4BAClB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7B,CAAC;wBACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACzB,CAAC,CAAC;;gBAlOF,CAAC;gBAmOL,oBAAC;YAAD,CAAC,AAtOD,CAAmC,OAAA,KAAK,GAsOvC;YAtOY,oBAAa,gBAsOzB,CAAA;QACL,CAAC,EAxOa,MAAM,GAAN,eAAM,KAAN,eAAM,QAwOnB;IACL,CAAC,EA1Oa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA0OrB;AACL,CAAC,EA5OM,OAAO,KAAP,OAAO,QA4Ob;AC5OD,IAAO,OAAO,CAwKb;AAxKD,WAAO,OAAO;IACV,IAAc,QAAQ,CAsKrB;IAtKD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAoKnB;QApKD,WAAc,MAAM;YAChB;gBAA4B,0BAAa;gBA+JrC;oBAAA,YACI,iBAAO,SACV;oBAhKD,oBAAc,GAAG;wBACb,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;wBAC7B,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC/D,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;4BAC3D,IAAI,IAAI,GAAG,IAAI,EAAE,WAAW,GAAG,KAAK,CAAC,EAAE,EACnC,eAAe,GAAG;gCACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oCAC5B,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;gCAC3C,CAAC,CAAC,CAAC;4BACP,CAAC,EACD,gBAAgB,GAAG;gCACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oCAC5B,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;gCAC3C,CAAC,CAAC,CAAC;4BACP,CAAC,EACD,iBAAiB,GAAG;gCAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oCAC5B,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gCACpF,CAAC,CAAC,CAAC;4BACP,CAAC,EACD,kBAAkB,GAAG;gCACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oCAC5B,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gCACpF,CAAC,CAAC,CAAC;4BACP,CAAC,CAAC;4BACN,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;gCAClD,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;oCACtB,iBAAiB,EAAE,CAAC;gCACxB,CAAC;gCACD,IAAI,CAAC,CAAC;oCACF,kBAAkB,EAAE,CAAC;gCACzB,CAAC;4BACL,CAAC;4BACD,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;gCACvD,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;oCACtB,eAAe,EAAE,CAAC;gCACtB,CAAC;gCACD,IAAI,CAAC,CAAC;oCACF,gBAAgB,EAAE,CAAC;gCACvB,CAAC;4BACL,CAAC;wBACL,CAAC;oBACL,CAAC,CAAA;oBAEO,yBAAmB,GAAG;wBAC1B,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,EACpB,OAAO,GAAG,EAAE,EACZ,GAAG,CAAC;wBACR,qBAAqB;wBACrB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;wBACzB,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;4BACpC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gCACX,KAAK,OAAO;oCACR,IAAI,QAAQ,GAAG;wCACX,IAAI,MAAM,GAAG,CAAC,CAAC;wCACf,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;4CAClB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wCACpC,CAAC;wCAAA,CAAC;wCACF,MAAM,CAAC,MAAM,CAAC;oCAClB,CAAC,CAAA;oCACD,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;wCAChD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;wCACjC,OAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC;oCAC/C,CAAC;oCACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wCACjD,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4CACzC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;4CACtC,OAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC;wCAC/C,CAAC;oCACL,CAAC;oCACD,KAAK,CAAC;gCACV,KAAK,KAAK;oCACN,IAAI,MAAM,GAAG;wCACT,IAAI,MAAM,GAAG,CAAC,CAAC;wCACf,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;4CAClB,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wCAC7D,CAAC;wCAAA,CAAC;wCACF,MAAM,CAAC,MAAM,CAAC;oCAClB,CAAC,CAAA;oCACD,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;wCAChD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;wCACjC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;oCAC3C,CAAC;oCACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wCACjD,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4CACzC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;4CACtC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;wCAC3C,CAAC;oCACL,CAAC;oCACD,KAAK,CAAC;gCACV,KAAK,KAAK;oCACN,IAAI,MAAM,GAAG;wCACT,IAAI,MAAM,GAAG,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC;wCACxC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;4CAClB,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;4CACjD,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;wCAC7C,CAAC;wCAAA,CAAC;wCACF,MAAM,CAAC,MAAM,CAAC;oCAClB,CAAC,CAAA;oCACD,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;wCAChD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;wCACjC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;oCAC3C,CAAC;oCACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wCACjD,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4CACzC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;4CACtC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;wCAC3C,CAAC;oCACL,CAAC;oCACD,KAAK,CAAC;gCACV,KAAK,KAAK;oCACN,IAAI,MAAM,GAAG;wCACT,IAAI,MAAM,GAAG,CAAC,CAAC;wCACf,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;4CAClB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wCAC5B,CAAC;wCAAA,CAAC;wCACF,MAAM,CAAC,MAAM,CAAC;oCAClB,CAAC,CAAA;oCACD,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;wCAChD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;wCACjC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;oCAC3C,CAAC;oCACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wCACjD,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4CACzC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;4CACtC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;wCAC3C,CAAC;oCACL,CAAC;oCACD,KAAK,CAAC;gCACV,KAAK,KAAK;oCACN,IAAI,MAAM,GAAG;wCACT,IAAI,MAAM,GAAG,CAAC,CAAC;wCACf,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;4CAClB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wCAC5B,CAAC;wCAAA,CAAC;wCACF,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;oCACjC,CAAC,CAAA;oCACD,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;wCAChD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;wCACjC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;oCAC3C,CAAC;oCACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wCACjD,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4CACzC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;4CACtC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;wCAC3C,CAAC;oCACL,CAAC;oCACD,KAAK,CAAC;4BACd,CAAC;wBACL,CAAC;wBAED,0CAA0C;wBAC1C,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC;4BACvB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;wBACnC,CAAC;wBACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACzB,CAAC,CAAA;;gBAID,CAAC;gBACL,aAAC;YAAD,CAAC,AAlKD,CAA4B,OAAA,aAAa,GAkKxC;YAlKY,aAAM,SAkKlB,CAAA;QACL,CAAC,EApKa,MAAM,GAAN,eAAM,KAAN,eAAM,QAoKnB;IACL,CAAC,EAtKa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAsKrB;AACL,CAAC,EAxKM,OAAO,KAAP,OAAO,QAwKb;ACxKD,IAAO,OAAO,CAiHb;AAjHD,WAAO,OAAO;IACV,IAAc,QAAQ,CA+GrB;IA/GD,WAAc,QAAQ;QAClB,IAAc,MAAM,CA6GnB;QA7GD,WAAc,MAAM;YAChB;gBAA8B,4BAAM;gBA6EhC,kBAAY,KAAc,EAAE,SAAmB,EAAE,OAAiB;oBAAlE,YACI,iBAAO,SA2BV;oBAxGM,4BAAsB,GAAG;wBAC5B,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;4BACtB,IAAI,CAAC,cAAc,EAAE,CAAC;4BACtB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gCACrB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;oCACvB,IAAI,CAAC,uBAAuB,EAAE,CAAC;gCACnC,CAAC;gCACD,IAAI,CAAC,CAAC;oCACF,IAAI,CAAC,cAAc,EAAE,CAAC;gCAC1B,CAAC;4BACL,CAAC;4BACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gCAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;4BAC/B,CAAC;4BACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACjC,CAAC;oBACL,CAAC,CAAA;oBAEO,iCAA2B,GAAG,UAAU,KAAK;wBACjD,IAAI,IAAI,GAAG,IAAI,CAAC;wBAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;wBACnB,IAAI,CAAC;4BACD,IAAI,CAAC,WAAW,GAAG,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;4BACtE,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;gCACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;4BAClC,CAAC,CAAC;4BACI,IAAI,CAAC,WAAY,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC;4BAChE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC1B,CAAC;wBACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BACR,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC3D,CAAC;oBACL,CAAC,CAAA;oBAEO,oBAAc,GAAG;wBACrB,IAAI,CAAC,OAAO,GAAI,IAAY,CAAC,MAAM,CAAC,OAAO,CAAC;wBAC5C,iBAAiB;wBAChB,IAAY,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;wBACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACvB,IAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAChD,CAAC,CAAA;oBAEO,oBAAc,GAAG;wBACpB,IAAY,CAAC,MAAM,GAAG;4BACnB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;4BAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;4BACxB,OAAO,EAAE,EAAE;yBACd,CAAC;wBACD,IAAY,CAAC,MAAM,GAAY;4BAC5B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;4BACrB,KAAK,EAAE,EAAE;yBACZ,CAAC;wBACF,IAAI,SAAS,GAAG;4BACX,IAAY,CAAC,MAAM,CAAC,OAAO,GAAI,IAAY,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;4BACjF,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAI,IAAY,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gCAChF,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;gCAClB,IAAI,GAAG,GAAG,QAAA,iBAAiB,CAAE,IAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gCAC1D,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;oCACb,IAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAI,IAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oCACvE,OAAQ,IAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oCACzC,IAAI,CAAC,2BAA2B,CAAE,IAAY,CAAC,MAAM,CAAC,CAAC;gCAC3D,CAAC;gCACD,IAAI,CAAC,CAAC;oCACF,IAAI,CAAC,cAAc,EAAE,CAAC;gCAC1B,CAAC;4BACL,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,IAAI,CAAC,cAAc,EAAE,CAAC;4BAC1B,CAAC;wBACL,CAAC,CAAA;wBACD,gBAAgB;wBAChB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC;wBAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC/B,CAAC,CAAA;oBAIG,IAAI,IAAI,GAAG,KAAI,CAAC;oBAChB,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;oBACnB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;oBACvB,KAAI,CAAC,UAAU,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBAClC,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBACpC,IAAI,CAAC;wBACD,KAAI,CAAC,WAAW,GAAG,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;wBACtE,KAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;4BACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBAClC,CAAC,CAAC;wBACI,KAAI,CAAC,WAAY,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC;wBAChE,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC5D,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;4BACd,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gCACjB,KAAI,CAAC,cAAc,EAAE,CAAC;4BAC1B,CAAC;4BACD,KAAI,CAAC,cAAc,EAAE,CAAC;wBAC1B,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,KAAI,CAAC,0BAA0B,EAAE,CAAC;wBACtC,CAAC;oBACL,CAAC;oBACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACR,KAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC3D,CAAC;;gBACL,CAAC;gBAEL,eAAC;YAAD,CAAC,AA3GD,CAA8B,OAAA,MAAM,GA2GnC;YA3GY,eAAQ,WA2GpB,CAAA;QACL,CAAC,EA7Ga,MAAM,GAAN,eAAM,KAAN,eAAM,QA6GnB;IACL,CAAC,EA/Ga,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA+GrB;AACL,CAAC,EAjHM,OAAO,KAAP,OAAO,QAiHb;ACjHD,IAAO,OAAO,CAWb;AAXD,WAAO,OAAO;IACV,IAAc,QAAQ,CASrB;IATD,WAAc,QAAQ;QAClB,IAAc,KAAK,CAOlB;QAPD,WAAc,KAAK;YACf;gBAA+B,6BAAI;gBAAnC;oBAAA,qEAKC;oBAJG,iBAAW,GAAW,CAAC,CAAC;oBAGxB,eAAS,GAAG,KAAK,CAAC;;gBACtB,CAAC;gBAAD,gBAAC;YAAD,CAAC,AALD,CAA+B,SAAA,IAAI,GAKlC;YALY,eAAS,YAKrB,CAAA;QACL,CAAC,EAPa,KAAK,GAAL,cAAK,KAAL,cAAK,QAOlB;IACL,CAAC,EATa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QASrB;AACL,CAAC,EAXM,OAAO,KAAP,OAAO,QAWb;ACXD,IAAO,OAAO,CAwCb;AAxCD,WAAO,OAAO;IACV,IAAc,QAAQ,CAsCrB;IAtCD,WAAc,QAAQ;QAClB,IAAc,KAAK,CAmClB;QAnCD,WAAc,KAAK;YACf;gBAA8B,4BAAS;gBAAvC;oBAAA,qEAiCC;oBA/Ba,gCAA0B,GAAG;wBACnC,IAAI,IAAI,GAAG,IAAI,CAAC;wBAChB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;4BACzB,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;4BAC5C,YAAY,CAAC,SAAS,GAAG;gCACrB,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;4BAC3C,CAAC,CAAA;4BACD,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC;gCAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;4BAC3B,CAAC,CAAA;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,MAAM,EACN,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;4BACtD,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,IAAI,CAAC,WAAW,CAAC;oCAClB,MAAc,CAAC,QAAQ,EAAE,CAAC;gCAC/B,CAAC;4BAEL,CAAC,CAAA;4BAED,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;gCACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;4BAC3B,CAAC,CAAA;wBACL,CAAC;oBACL,CAAC,CAAA;;gBAEL,CAAC;gBAAD,eAAC;YAAD,CAAC,AAjCD,CAA8B,MAAA,SAAS,GAiCtC;YAjCY,cAAQ,WAiCpB,CAAA;QACL,CAAC,EAnCa,KAAK,GAAL,cAAK,KAAL,cAAK,QAmClB;IAEL,CAAC,EAtCa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAsCrB;AACL,CAAC,EAxCM,OAAO,KAAP,OAAO,QAwCb;ACxCD,IAAO,OAAO,CAwEb;AAxED,WAAO,OAAO;IACV,IAAc,QAAQ,CAsErB;IAtED,WAAc,QAAQ;QAClB,IAAc,KAAK,CAoElB;QApED,WAAc,KAAK;YACf;gBAAwB,sBAAQ;gBAAhC;oBAAA,qEAkEC;oBAjEW,oBAAc,GAAG,UAAU,MAAM,EAAE,MAAM;wBAC7C,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,EACX,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAC5C,iBAAiB,CAAC;wBACtB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCACxE,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;wCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;4CACT,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gDACjD,EAAE,IAAI,CAAC,WAAW,CAAC;4CACvB,CAAC;4CACD,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;oCACL,CAAC,CAAA;oCACD,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;wCACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oCAC3B,CAAC,CAAA;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gCACzB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;wCACrB,iBAAiB,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wCACnE,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;4CACrC,IAAI,CAAC,WAAW,IAAU,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAC/C,CAAC,CAAA;wCACD,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4CACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4CACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wCAC3B,CAAC,CAAA;oCACL,CAAC;gCACL,CAAC;4BACL,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;wCACrB,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wCACxE,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;4CACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;4CAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gDACT,EAAE,IAAI,CAAC,WAAW,CAAC;gDACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;4CACtB,CAAC;wCACL,CAAC,CAAA;wCACD,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4CACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4CACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wCAC3B,CAAC,CAAA;oCACL,CAAC;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;wBAED,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;oBACL,CAAC,CAAA;;gBACL,CAAC;gBAAD,SAAC;YAAD,CAAC,AAlED,CAAwB,MAAA,QAAQ,GAkE/B;YAlEY,QAAE,KAkEd,CAAA;QACL,CAAC,EApEa,KAAK,GAAL,cAAK,KAAL,cAAK,QAoElB;IACL,CAAC,EAtEa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAsErB;AACL,CAAC,EAxEM,OAAO,KAAP,OAAO,QAwEb;ACxED,IAAO,OAAO,CAiEb;AAjED,WAAO,OAAO;IACV,IAAc,QAAQ,CA+DrB;IA/DD,WAAc,QAAQ;QAClB,IAAc,KAAK,CA6DlB;QA7DD,WAAc,KAAK;YACf;gBAA0B,wBAAE;gBAA5B;oBAAA,qEA2DC;oBArDW,uBAAiB,GAAG,UAAU,KAAK;wBACvC,IAAI,KAAK,GAAG,KAAK,EACb,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;wBAC7C,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;4BACtB,KAAK,QAAA,SAAS,CAAC,GAAG;gCAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oCACzD,KAAK,GAAG,IAAI,CAAC;gCACjB,CAAC;gCAAA,CAAC;gCAAC,KAAK,CAAC;4BACT,KAAK,QAAA,SAAS,CAAC,KAAK;gCAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oCAC3D,KAAK,GAAG,IAAI,CAAC;gCACjB,CAAC;gCAAA,CAAC;gCAAC,KAAK,CAAC;4BACT;gCAAS,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;oCACpF,KAAK,GAAG,IAAI,CAAC;gCACjB,CAAC;gCAAA,CAAC;wBACN,CAAC;wBACD,MAAM,CAAC,KAAK,CAAC;oBACjB,CAAC,CAAA;oBAES,sBAAgB,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE,MAAiB;wBACnE,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,CAAC;wBAChB,IAAI,CAAC,SAAS,GAAY,KAAM,CAAC,WAAW,EAAE,CAAC;wBAC/C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;wBAC7C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;wBACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;wBACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;wBACrE,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;wBACD,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC;wCACpC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACjD,EAAE,IAAI,CAAC,WAAW,CAAC;oCACvB,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACvC,EAAE,IAAI,CAAC,WAAW,CAAC;oCACvB,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;oBACL,CAAC,CAAA;;gBACL,CAAC;gBAAD,WAAC;YAAD,CAAC,AA3DD,CAA0B,MAAA,EAAE,GA2D3B;YA3DY,UAAI,OA2DhB,CAAA;QACL,CAAC,EA7Da,KAAK,GAAL,cAAK,KAAL,cAAK,QA6DlB;IACL,CAAC,EA/Da,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA+DrB;AACL,CAAC,EAjEM,OAAO,KAAP,OAAO,QAiEb;ACjED,IAAO,OAAO,CA0Db;AA1DD,WAAO,OAAO;IACV,IAAc,QAAQ,CAwDrB;IAxDD,WAAc,QAAQ;QAClB,IAAc,KAAK,CAsDlB;QAtDD,WAAc,KAAK;YACf;gBAA2B,yBAAI;gBAA/B;oBAAA,qEAoDC;oBAnDW,uBAAiB,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE,EAAE;wBACnD,IAAI,IAAI,GAAG,IAAI,CAAC;wBAChB,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;wBAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,IAAI,MAA0B,EAC1B,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;4BAC/F,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACjD,EAAE,IAAI,CAAC,WAAW,CAAC;oCACvB,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;4BAED,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;gCACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;4BAC3B,CAAC,CAAA;wBAEL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gCACzB,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gCACrF,YAAY,CAAC,SAAS,GAAG;oCACrB,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;gCAC3C,CAAC,CAAA;gCACD,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC;oCAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gCAC3B,CAAC,CAAA;4BACL,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,IAAI,MAA0B,EAC1B,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gCAC/F,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;oCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;oCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;wCACT,EAAE,IAAI,CAAC,WAAW,CAAC;wCACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;oCACtB,CAAC;gCACL,CAAC,CAAA;gCAED,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;oCACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gCAC3B,CAAC,CAAA;4BACL,CAAC;wBACL,CAAC;oBACL,CAAC,CAAA;;gBACL,CAAC;gBAAD,YAAC;YAAD,CAAC,AApDD,CAA2B,MAAA,IAAI,GAoD9B;YApDY,WAAK,QAoDjB,CAAA;QACL,CAAC,EAtDa,KAAK,GAAL,cAAK,KAAL,cAAK,QAsDlB;IACL,CAAC,EAxDa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAwDrB;AACL,CAAC,EA1DM,OAAO,KAAP,OAAO,QA0Db;AC1DD,IAAO,OAAO,CAoDb;AApDD,WAAO,OAAO;IACV,IAAc,QAAQ,CAkDrB;IAlDD,WAAc,QAAQ;QAClB,IAAc,KAAK,CA+ClB;QA/CD,WAAc,KAAK;YACf;gBAA8B,4BAAK;gBAQ/B,kBAAY,KAAa,EAAE,SAAmB,EAAE,OAAiB;oBAAjE,YACI,iBAAO,SAkCV;oBAzCM,4BAAsB,GAAG;wBAC5B,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;4BACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBACrC,CAAC;oBACL,CAAC,CAAA;oBAIG,IAAI,IAAI,GAAG,KAAI,CAAC;oBAChB,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;oBACnB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;oBACvB,IAAI,CAAC;wBACD,IAAI,iBAAiB,GAAG;4BACpB,IAAI,CAAC,WAAW,GAAG,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;4BACtE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC5D,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;gCACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;4BAClC,CAAC,CAAC;4BACI,IAAI,CAAC,WAAY,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC;wBAClE,CAAC,CAAA;wBACD,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC;4BAC3B,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gCACjB,IAAI,SAAA,MAAM,CAAC,QAAQ,CAAC,KAAgB,EAAE,UAAU,OAAO;oCACnD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;oCAClC,IAAI,CAAC,sBAAsB,EAAE,CAAA;gCACjC,CAAC,EAAE,KAAI,CAAC,OAAO,CAAC,CAAC;4BACrB,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,iBAAiB,EAAE,CAAC;gCACpB,KAAI,CAAC,cAAc,EAAE,CAAC;4BAC1B,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,iBAAiB,EAAE,CAAC;4BACpB,KAAI,CAAC,0BAA0B,EAAE,CAAC;wBACtC,CAAC;oBACL,CAAC;oBACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACR,KAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;oBAC1D,CAAC;;gBACL,CAAC;gBAEL,eAAC;YAAD,CAAC,AA7CD,CAA8B,MAAA,KAAK,GA6ClC;YA7CY,cAAQ,WA6CpB,CAAA;QACL,CAAC,EA/Ca,KAAK,GAAL,cAAK,KAAL,cAAK,QA+ClB;IAEL,CAAC,EAlDa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAkDrB;AACL,CAAC,EApDM,OAAO,KAAP,OAAO,QAoDb;ACpDD,IAAO,OAAO,CA8Bb;AA9BD,WAAO,OAAO;IACV,IAAc,QAAQ,CA4BrB;IA5BD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAsBnB;QAtBD,WAAc,MAAM;YAEL,kBAAW,GAAG,UAAU,aAAa,EAAE,WAAW;gBACzD,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC;oBAC5B,EAAE,CAAC,CAAC,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;wBACxC,WAAW,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;oBAC1C,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BAChC,MAAM,CAAC,CAAC,EAAS,CAAC,CAAC,CAAC;gCAChB,KAAK,GAAG;oCAAE,WAAW,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;oCAAC,KAAK,CAAC;gCAC5D,KAAK,GAAG;oCAAE,WAAW,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;oCAAC,KAAK,CAAC;gCAC5D,KAAK,GAAG;oCAAE,WAAW,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;oCAAC,KAAK,CAAC;gCAC5D,KAAK,GAAG;oCAAE,WAAW,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;oCAAC,KAAK,CAAC;gCAC5D,SAAS,WAAW,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;4BACnD,CAAC;4BACD,KAAK,CAAC;wBACV,CAAC;oBACL,CAAC;gBACL,CAAC;gBACD,MAAM,CAAC,WAAW,CAAC;YACvB,CAAC,CAAA;QACL,CAAC,EAtBa,MAAM,GAAN,eAAM,KAAN,eAAM,QAsBnB;QAED;YAAgC,8BAAI;YAApC;gBAAA,qEAEC;gBADG,eAAS,GAAG,KAAK,CAAC;;YACtB,CAAC;YAAD,iBAAC;QAAD,CAAC,AAFD,CAAgC,SAAA,IAAI,GAEnC;QAFY,mBAAU,aAEtB,CAAA;IACL,CAAC,EA5Ba,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA4BrB;AACL,CAAC,EA9BM,OAAO,KAAP,OAAO,QA8Bb;AC9BD,IAAO,OAAO,CA4Bb;AA5BD,WAAO,OAAO;IACV,IAAc,QAAQ,CA0BrB;IA1BD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAuBnB;QAvBD,WAAc,MAAM;YAChB;gBAA8B,4BAAU;gBAAxC;oBAAA,qEAqBC;oBAnBa,gCAA0B,GAAG;wBACnC,IAAI,MAAM,EACN,IAAI,GAAG,IAAI,EACX,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;wBACtD,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;4BACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;4BAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gCACT,MAAM,CAAC,MAAM,CAAC,OAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gCACzD,EAAE,IAAI,CAAC,WAAW,CAAC;gCAClB,MAAc,CAAC,QAAQ,EAAE,CAAC;4BAC/B,CAAC;wBAEL,CAAC,CAAA;wBACD,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;oBACL,CAAC,CAAA;;gBAEL,CAAC;gBAAD,eAAC;YAAD,CAAC,AArBD,CAA8B,SAAA,UAAU,GAqBvC;YArBY,eAAQ,WAqBpB,CAAA;QACL,CAAC,EAvBa,MAAM,GAAN,eAAM,KAAN,eAAM,QAuBnB;IAEL,CAAC,EA1Ba,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA0BrB;AACL,CAAC,EA5BM,OAAO,KAAP,OAAO,QA4Bb;AC5BD,IAAO,OAAO,CA0Db;AA1DD,WAAO,OAAO;IACV,IAAc,QAAQ,CAwDrB;IAxDD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAsDnB;QAtDD,WAAc,MAAM;YAChB;gBAAwB,sBAAQ;gBAAhC;oBAAA,qEAoDC;oBAnDW,oBAAc,GAAG,UAAU,MAAM,EAAE,MAAM;wBAC7C,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,EACX,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAC5C,iBAAiB,CAAC;wBACtB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCACxE,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;wCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;4CACT,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gDACjD,MAAM,CAAC,MAAM,CAAC,OAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gDACzD,EAAE,IAAI,CAAC,WAAW,CAAC;4CACvB,CAAC;4CACD,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;oCACL,CAAC,CAAA;oCACD,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;wCACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oCAC3B,CAAC,CAAA;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCACxE,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;wCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;4CACT,MAAM,CAAC,MAAM,CAAC,OAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;4CACzD,EAAE,IAAI,CAAC,WAAW,CAAC;4CACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;oCACL,CAAC,CAAA;oCACD,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;wCACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oCAC3B,CAAC,CAAA;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;wBAED,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;oBACL,CAAC,CAAA;;gBACL,CAAC;gBAAD,SAAC;YAAD,CAAC,AApDD,CAAwB,OAAA,QAAQ,GAoD/B;YApDY,SAAE,KAoDd,CAAA;QACL,CAAC,EAtDa,MAAM,GAAN,eAAM,KAAN,eAAM,QAsDnB;IACL,CAAC,EAxDa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAwDrB;AACL,CAAC,EA1DM,OAAO,KAAP,OAAO,QA0Db;AC1DD,IAAO,OAAO,CAmEb;AAnED,WAAO,OAAO;IACV,IAAc,QAAQ,CAiErB;IAjED,WAAc,QAAQ;QAClB,IAAc,MAAM,CA+DnB;QA/DD,WAAc,MAAM;YAChB;gBAA0B,wBAAE;gBAA5B;oBAAA,qEA6DC;oBAxDW,uBAAiB,GAAG,UAAU,KAAK;wBACvC,IAAI,KAAK,GAAG,KAAK,EACb,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;wBAC7C,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;4BACtB,KAAK,QAAA,SAAS,CAAC,GAAG;gCAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oCACzD,KAAK,GAAG,IAAI,CAAC;gCACjB,CAAC;gCAAA,CAAC;gCAAC,KAAK,CAAC;4BACT,KAAK,QAAA,SAAS,CAAC,KAAK;gCAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oCAC3D,KAAK,GAAG,IAAI,CAAC;gCACjB,CAAC;gCAAA,CAAC;gCAAC,KAAK,CAAC;4BACT;gCAAS,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;oCACpF,KAAK,GAAG,IAAI,CAAC;gCACjB,CAAC;gCAAA,CAAC;wBACN,CAAC;wBACD,MAAM,CAAC,KAAK,CAAC;oBACjB,CAAC,CAAA;oBAES,sBAAgB,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE,MAAiB;wBACnE,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,CAAC;wBAChB,IAAI,CAAC,SAAS,GAAY,KAAM,CAAC,WAAW,EAAE,CAAC;wBAC/C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;wBAC7C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;wBACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;wBACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;wBACrE,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;wBACD,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC;wCACpC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACjD,MAAM,CAAC,MAAM,CAAC,OAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;wCACzD,EAAE,IAAI,CAAC,WAAW,CAAC;oCACvB,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BAEL,CAAC,CAAA;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACvC,MAAM,CAAC,MAAM,CAAC,OAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;wCACzD,EAAE,IAAI,CAAC,WAAW,CAAC;oCACvB,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;oBACL,CAAC,CAAA;;gBACL,CAAC;gBAAD,WAAC;YAAD,CAAC,AA7DD,CAA0B,OAAA,EAAE,GA6D3B;YA7DY,WAAI,OA6DhB,CAAA;QACL,CAAC,EA/Da,MAAM,GAAN,eAAM,KAAN,eAAM,QA+DnB;IACL,CAAC,EAjEa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAiErB;AACL,CAAC,EAnEM,OAAO,KAAP,OAAO,QAmEb;ACnED,IAAO,OAAO,CAyCb;AAzCD,WAAO,OAAO;IACV,IAAc,QAAQ,CAuCrB;IAvCD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAqCnB;QArCD,WAAc,MAAM;YAChB;gBAA2B,yBAAI;gBAA/B;oBAAA,qEAmCC;oBAlCW,uBAAiB,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE,EAAE;wBACnD,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,EACX,iBAAiB,CAAC;wBACtB,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;wBAC/B,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;wBAC3F,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACjD,MAAM,CAAC,MAAM,CAAC,OAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;wCACzD,EAAE,IAAI,CAAC,WAAW,CAAC;oCACvB,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,MAAM,CAAC,MAAM,CAAC,OAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oCACzD,EAAE,IAAI,CAAC,WAAW,CAAC;oCACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;wBAED,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;oBACL,CAAC,CAAA;;gBACL,CAAC;gBAAD,YAAC;YAAD,CAAC,AAnCD,CAA2B,OAAA,IAAI,GAmC9B;YAnCY,YAAK,QAmCjB,CAAA;QACL,CAAC,EArCa,MAAM,GAAN,eAAM,KAAN,eAAM,QAqCnB;IACL,CAAC,EAvCa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAuCrB;AACL,CAAC,EAzCM,OAAO,KAAP,OAAO,QAyCb;ACzCD,IAAO,OAAO,CAoJb;AApJD,WAAO,OAAO;IACV,IAAc,QAAQ,CAkJrB;IAlJD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAgJnB;QAhJD,WAAc,MAAM;YAChB;gBAA8B,4BAAK;gBA2C/B,kBAAY,KAAc,EAAE,SAAmB,EAAE,OAAiB;oBAAlE,YACI,iBAAO,SAsCV;oBAjFS,4BAAsB,GAAG;wBAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACrC,CAAC,CAAA;oBAEO,iCAA2B,GAAG,UAAU,KAAK;wBACjD,IAAI,IAAI,GAAG,IAAI,CAAC;wBAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;wBACnB,IAAI,CAAC;4BACD,IAAI,CAAC,WAAW,GAAG,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;4BACrE,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;gCACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;4BAClC,CAAC,CAAC;4BACI,IAAI,CAAC,WAAY,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC;4BAChE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;4BAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC1B,CAAC;wBACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BACR,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC3D,CAAC;oBACL,CAAC,CAAA;oBAEO,oBAAc,GAAG;wBACrB,IAAI,IAAI,GAAG,IAAI,CAAC;wBAChB,IAAI,SAAA,MAAM,CAAC,QAAQ,CAAU;4BACzB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;4BACnB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;yBAC1B,EAAE,UAAU,OAAmB;4BAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EACvC,OAAO,GAAG,EAAE,EACZ,QAAQ,GAAG,EAAE,CAAC;4BAClB,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK;gCAC3B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;4BAC7B,CAAC,CAAC,CAAA;4BACF,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;4BAChC,IAAI,CAAC,2BAA2B,CAAC;gCAC7B,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;gCACjB,KAAK,EAAE,QAAQ;gCACf,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;6BACtB,CAAC,CAAA;wBACN,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrB,CAAC,CAAA;oBAIG,IAAI,CAAC;wBACD,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;wBAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;wBACvB,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;wBACtC,EAAE,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC;4BACrB,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;4BACnB,IAAI,IAAI,GAAG,KAAI,CAAC;4BAChB,IAAI,iBAAiB,GAAG;gCACpB,IAAI,CAAC,WAAW,GAAG,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;gCACrE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gCAC1D,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;oCACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;gCAClC,CAAC,CAAC;gCACI,IAAI,CAAC,WAAY,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC;4BAClE,CAAC,CAAA;4BAED,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gCACd,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;oCACjB,KAAI,CAAC,cAAc,EAAE,CAAC;gCAC1B,CAAC;gCACD,IAAI,CAAC,CAAC;oCACF,iBAAiB,EAAE,CAAC;oCACpB,KAAI,CAAC,cAAc,EAAE,CAAC;gCAC1B,CAAC;4BACL,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,iBAAiB,EAAE,CAAC;gCACpB,KAAI,CAAC,0BAA0B,EAAE,CAAC;4BACtC,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,KAAI,CAAC,cAAc,CAAC,KAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBAC1C,CAAC;oBACL,CAAC;oBACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACR,KAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzD,CAAC;;gBACL,CAAC;gBAEO,8BAAW,GAAnB,UAAoB,aAAa,EAAE,SAAiB;oBAChD,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;wBAChB,IAAI,YAAY,GAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC9C,IAAI,GAAG,IAAI,CAAC;wBAChB,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;4BACf,IAAI,iBAAiB,GAAG,UAAU,KAAgB,EAAE,OAAY;gCAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gCACzB,IAAI,CAAC,KAAK,GAAG,QAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;4BAChD,CAAC,CAAA;4BACD,kDAAkD;4BAClD,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,MAAc;gCAC/C,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC;wCAC/B,IAAI,YAAY,GAAG,UAAU,KAAK;4CAC9B,uBAAuB;4CACvB,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,QAAA,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gDAClC,iBAAiB,CAAC,QAAA,SAAS,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;4CACxE,CAAC;4CAED,gBAAgB;4CAChB,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gDAClB,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;gDACxB,EAAE,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;oDAC1B,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC;wDACnB,iBAAiB,CAAC,QAAA,SAAS,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oDAC1E,CAAC;oDACD,IAAI,CAAC,CAAC;wDACF,IAAI,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wDACvC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;4DACrB,EAAE,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gEAChC,iBAAiB,CAAC,QAAA,SAAS,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;4DAC1E,CAAC;4DACD,KAAK,CAAC;wDACV,CAAC;oDACL,CAAC;gDACL,CAAC;4CACL,CAAC;wCACL,CAAC,CAAC;wCACF,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;oCAC7C,CAAC;oCACD,MAAM,CAAC,IAAI,CAAC;gCAChB,CAAC;gCACD,IAAI,CAAC,CAAC;oCACF,MAAM,CAAC,KAAK,CAAC;gCACjB,CAAC;4BACL,CAAC,CAAC,CAAC;wBACP,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,KAAK,GAAG,QAAA,KAAK,CAAC,QAAQ,CAAC,QAAA,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;4BAC9E,QAAA,UAAU,CAAC,KAAK,CAAC,CAAC;wBACtB,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wBACzB,qDAAqD;wBACrD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACtB,CAAC;gBACL,CAAC;gBACL,eAAC;YAAD,CAAC,AA9ID,CAA8B,OAAA,KAAK,GA8IlC;YA9IY,eAAQ,WA8IpB,CAAA;QACL,CAAC,EAhJa,MAAM,GAAN,eAAM,KAAN,eAAM,QAgJnB;IACL,CAAC,EAlJa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAkJrB;AACL,CAAC,EApJM,OAAO,KAAP,OAAO,QAoJb;ACpJD,IAAO,OAAO,CAQb;AARD,WAAO,OAAO;IACV,IAAc,QAAQ,CAMrB;IAND,WAAc,QAAQ;QAClB,IAAc,MAAM,CAInB;QAJD,WAAc,MAAM;YAChB;gBAAgC,8BAAI;gBAApC;oBAAA,qEAEC;oBADG,eAAS,GAAG,KAAK,CAAC;;gBACtB,CAAC;gBAAD,iBAAC;YAAD,CAAC,AAFD,CAAgC,SAAA,IAAI,GAEnC;YAFY,iBAAU,aAEtB,CAAA;QACL,CAAC,EAJa,MAAM,GAAN,eAAM,KAAN,eAAM,QAInB;IACL,CAAC,EANa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAMrB;AACL,CAAC,EARM,OAAO,KAAP,OAAO,QAQb;ACRD,IAAO,OAAO,CA4Bb;AA5BD,WAAO,OAAO;IACV,IAAc,QAAQ,CA0BrB;IA1BD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAuBnB;QAvBD,WAAc,MAAM;YAChB;gBAA8B,4BAAU;gBAAxC;oBAAA,qEAqBC;oBAnBa,gCAA0B,GAAG;wBACnC,IAAI,MAAM,EACN,IAAI,GAAG,IAAI,EACX,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;wBACtD,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;4BACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;4BAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gCACT,MAAM,CAAC,MAAM,EAAE,CAAC;gCAChB,EAAE,IAAI,CAAC,WAAW,CAAC;gCAClB,MAAc,CAAC,QAAQ,EAAE,CAAC;4BAC/B,CAAC;wBAEL,CAAC,CAAA;wBACD,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;oBACL,CAAC,CAAA;;gBAEL,CAAC;gBAAD,eAAC;YAAD,CAAC,AArBD,CAA8B,OAAA,UAAU,GAqBvC;YArBY,eAAQ,WAqBpB,CAAA;QACL,CAAC,EAvBa,MAAM,GAAN,eAAM,KAAN,eAAM,QAuBnB;IAEL,CAAC,EA1Ba,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA0BrB;AACL,CAAC,EA5BM,OAAO,KAAP,OAAO,QA4Bb;AC5BD,IAAO,OAAO,CA0Db;AA1DD,WAAO,OAAO;IACV,IAAc,QAAQ,CAwDrB;IAxDD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAsDnB;QAtDD,WAAc,MAAM;YAChB;gBAAwB,sBAAQ;gBAAhC;oBAAA,qEAoDC;oBAnDW,oBAAc,GAAG,UAAU,MAAM,EAAE,MAAM;wBAC7C,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,EACX,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAC5C,iBAAiB,CAAC;wBACtB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCAC3F,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;wCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;4CACT,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gDACjD,MAAM,CAAC,MAAM,EAAE,CAAC;gDAChB,EAAE,IAAI,CAAC,WAAW,CAAC;4CACvB,CAAC;4CACD,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;oCACL,CAAC,CAAA;oCACD,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;wCACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oCAC3B,CAAC,CAAA;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oCACrB,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCAC3F,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;wCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;wCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;4CACT,MAAM,CAAC,MAAM,EAAE,CAAC;4CAChB,EAAE,IAAI,CAAC,WAAW,CAAC;4CACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;wCACtB,CAAC;oCACL,CAAC,CAAA;oCACD,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;wCACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oCAC3B,CAAC,CAAA;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;wBAED,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;oBACL,CAAC,CAAA;;gBACL,CAAC;gBAAD,SAAC;YAAD,CAAC,AApDD,CAAwB,OAAA,QAAQ,GAoD/B;YApDY,SAAE,KAoDd,CAAA;QACL,CAAC,EAtDa,MAAM,GAAN,eAAM,KAAN,eAAM,QAsDnB;IACL,CAAC,EAxDa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAwDrB;AACL,CAAC,EA1DM,OAAO,KAAP,OAAO,QA0Db;AC1DD,IAAO,OAAO,CAoEb;AApED,WAAO,OAAO;IACV,IAAc,QAAQ,CAkErB;IAlED,WAAc,QAAQ;QAClB,IAAc,MAAM,CAgEnB;QAhED,WAAc,MAAM;YAChB;gBAA0B,wBAAE;gBAA5B;oBAAA,qEA8DC;oBAzDW,uBAAiB,GAAG,UAAU,KAAK;wBACvC,IAAI,KAAK,GAAG,KAAK,EACb,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;wBAC7C,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;4BACtB,KAAK,QAAA,SAAS,CAAC,GAAG;gCAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oCACzD,KAAK,GAAG,IAAI,CAAC;gCACjB,CAAC;gCAAA,CAAC;gCAAC,KAAK,CAAC;4BACT,KAAK,QAAA,SAAS,CAAC,KAAK;gCAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oCAC3D,KAAK,GAAG,IAAI,CAAC;gCACjB,CAAC;gCAAA,CAAC;gCAAC,KAAK,CAAC;4BACT;gCAAS,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;oCACpF,KAAK,GAAG,IAAI,CAAC;gCACjB,CAAC;gCAAA,CAAC;wBACN,CAAC;wBACD,MAAM,CAAC,KAAK,CAAC;oBACjB,CAAC,CAAA;oBAIS,sBAAgB,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE,MAAiB;wBACnE,IAAI,IAAI,GAAG,IAAI,EACX,MAA0B,CAAC;wBAC/B,IAAI,CAAC,SAAS,GAAY,KAAM,CAAC,WAAW,EAAE,CAAC;wBAC/C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;wBAC7C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;wBACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;wBACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;wBACrE,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;wBACD,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC;wCACpC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACjD,MAAM,CAAC,MAAM,EAAE,CAAC;wCAChB,EAAE,IAAI,CAAC,WAAW,CAAC;oCACvB,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCAC1C,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACvC,MAAM,CAAC,MAAM,EAAE,CAAC;wCAChB,EAAE,IAAI,CAAC,WAAW,CAAC;oCACvB,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;oBACL,CAAC,CAAA;;gBACL,CAAC;gBAAD,WAAC;YAAD,CAAC,AA9DD,CAA0B,OAAA,EAAE,GA8D3B;YA9DY,WAAI,OA8DhB,CAAA;QACL,CAAC,EAhEa,MAAM,GAAN,eAAM,KAAN,eAAM,QAgEnB;IACL,CAAC,EAlEa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAkErB;AACL,CAAC,EApEM,OAAO,KAAP,OAAO,QAoEb;ACpED,IAAO,OAAO,CAyCb;AAzCD,WAAO,OAAO;IACV,IAAc,QAAQ,CAuCrB;IAvCD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAqCnB;QArCD,WAAc,MAAM;YAChB;gBAA2B,yBAAI;gBAA/B;oBAAA,qEAmCC;oBAlCW,uBAAiB,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE,EAAE;wBACnD,IAAI,MAA0B,EAC1B,IAAI,GAAG,IAAI,EACX,iBAAiB,CAAC;wBACtB,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;wBAC/B,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;wBAC3F,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACjB,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACjD,MAAM,CAAC,MAAM,EAAE,CAAC;wCAChB,EAAE,IAAI,CAAC,WAAW,CAAC;oCACvB,CAAC;oCACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,iBAAiB,CAAC,SAAS,GAAG,UAAU,CAAC;gCACrC,MAAM,GAAS,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gCAChC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oCACT,MAAM,CAAC,MAAM,EAAE,CAAC;oCAChB,EAAE,IAAI,CAAC,WAAW,CAAC;oCACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACtB,CAAC;4BACL,CAAC,CAAA;wBACL,CAAC;wBAED,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;4BACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;oBACL,CAAC,CAAA;;gBACL,CAAC;gBAAD,YAAC;YAAD,CAAC,AAnCD,CAA2B,OAAA,IAAI,GAmC9B;YAnCY,YAAK,QAmCjB,CAAA;QACL,CAAC,EArCa,MAAM,GAAN,eAAM,KAAN,eAAM,QAqCnB;IACL,CAAC,EAvCa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAuCrB;AACL,CAAC,EAzCM,OAAO,KAAP,OAAO,QAyCb;ACzCD,IAAO,OAAO,CAsFb;AAtFD,WAAO,OAAO;IACV,IAAc,QAAQ,CAmFrB;IAnFD,WAAc,QAAQ;QAClB,IAAc,MAAM,CAiFnB;QAjFD,WAAc,MAAM;YAChB;gBAA8B,4BAAK;gBAgD/B,kBAAY,KAAc,EAAE,SAAmB,EAAE,OAAiB;oBAAlE,YACI,iBAAO,SA6BV;oBA5EO,4BAAsB,GAAG;wBAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACrC,CAAC,CAAA;oBAEO,iCAA2B,GAAG,UAAU,KAAK;wBACjD,IAAI,IAAI,GAAG,IAAI,CAAC;wBAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;wBACnB,IAAI,CAAC;4BACD,IAAI,CAAC,WAAW,GAAG,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;4BACvE,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;gCACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;4BAClC,CAAC,CAAC;4BACI,IAAI,CAAC,WAAY,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC;4BAChE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC1B,CAAC;wBACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BACR,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC3D,CAAC;oBACL,CAAC,CAAA;oBAEO,oBAAc,GAAG;wBACpB,IAAY,CAAC,MAAM,GAAG;4BACnB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;4BAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;yBAC3B,CAAC;wBACD,IAAY,CAAC,MAAM,GAAY;4BAC5B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;4BACrB,KAAK,EAAE,EAAE;yBACZ,CAAC;wBACF,IAAI,SAAS,GAAG;4BACZ,IAAI,GAAG,GAAG,QAAA,iBAAiB,CAAE,IAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;4BAC1D,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;gCACb,IAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAI,IAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gCACvE,OAAQ,IAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gCACzC,IAAI,CAAC,2BAA2B,CAAE,IAAY,CAAC,MAAM,CAAC,CAAC;4BAC3D,CAAC;4BACD,IAAI,CAAC,CAAC;gCACD,IAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;4BACpD,CAAC;wBACL,CAAC,CAAA;wBACD,gBAAgB;wBAChB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC;wBAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC/B,CAAC,CAAA;oBAIG,IAAI,CAAC;wBACD,IAAI,IAAI,GAAG,KAAI,CAAC;wBAChB,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;wBACnB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;wBAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;wBACvB,KAAI,CAAC,WAAW,GAAG,SAAA,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;wBACvE,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC5D,KAAI,CAAC,WAAW,CAAC,UAAU,GAAG;4BAC1B,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBAClC,CAAC,CAAA;wBACD,KAAI,CAAC,WAAW,CAAC,OAAO,GAAG,UAAU,CAAC;4BAClC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAA;wBAED,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;4BACd,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gCACjB,KAAI,CAAC,cAAc,EAAE,CAAC;4BAC1B,CAAC;4BACD,KAAI,CAAC,cAAc,EAAE,CAAC;wBAC1B,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,KAAI,CAAC,0BAA0B,EAAE,CAAC;wBACtC,CAAC;oBAEL,CAAC;oBACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACR,KAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC3D,CAAC;;gBACL,CAAC;gBACL,eAAC;YAAD,CAAC,AA/ED,CAA8B,OAAA,KAAK,GA+ElC;YA/EY,eAAQ,WA+EpB,CAAA;QACL,CAAC,EAjFa,MAAM,GAAN,eAAM,KAAN,eAAM,QAiFnB;IACL,CAAC,EAnFa,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAmFrB;AAEL,CAAC,EAtFM,OAAO,KAAP,OAAO,QAsFb;ACtFD,IAAO,OAAO,CAyLb;AAzLD,WAAO,OAAO;IACC,oBAAY,GAAoB,QAAA,eAAe,CAAC,UAAU,CAC1C;IAC3B;QAAA;YACI,iBAAY,GAA6B,EAAE,CAAC;YAC5C,oBAAe,GAAG,KAAK,CAAC;YAEd,YAAO,GAAG,UAAU,OAA0B,EAAE,UAAmB;gBACzE,EAAE,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC;oBACtB,IAAI,IAAI,GAAG,IAAI,CAAC;oBAChB,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM;wBACxC,OAAO,CAAC,SAAS,GAAG,UAAU,MAAM;4BAChC,OAAO,CAAC,MAAM,CAAC,CAAC;wBACpB,CAAC,CAAC;wBACF,OAAO,CAAC,OAAO,GAAG,UAAU,KAAK;4BAC7B,MAAM,CAAC,KAAK,CAAC,CAAC;wBAClB,CAAC,CAAC;wBACF,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;oBACzC,CAAC,CAAC,CAAC;gBACP,CAAC;gBACD,IAAI,CAAC,CAAC;oBACF,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC,CAAA;YAEO,2BAAsB,GAAG,UAAU,OAA0B;gBACjE,EAAE,CAAC,CAAC,QAAA,MAAM,CAAC,SAAS,IAAI,QAAA,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;oBAClD,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;wBACnB,KAAK,WAAW,CAAC;wBACjB,KAAK,SAAS;4BACV,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;4BACxC,EAAE,CAAC,CAAC,QAAA,YAAY,IAAI,QAAA,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;gCAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;4BACvB,CAAC;4BAAA,CAAC;4BACF,QAAA,MAAM,CAAC,SAAS,GAAG,QAAA,gBAAgB,CAAC,SAAS,CAAC;4BAC9C,KAAK,CAAC;wBACV,SAAS,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC7C,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,CAAC;oBACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAChC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,IAAI,QAAA,YAAY,IAAI,QAAA,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;wBAC9E,IAAI,CAAC,WAAW,EAAE,CAAC;oBACvB,CAAC;gBACL,CAAC;gBACD,EAAE,CAAC,CAAC,QAAA,SAAS,CAAC,CAAC,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnD,CAAC;YAEL,CAAC,CAAA;YAEO,gBAAW,GAAG;gBAClB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;oBAC5B,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EACnC,OAAO,GAAsB;wBACzB,IAAI,EAAE,YAAY,CAAC,IAAI;wBACvB,KAAK,EAAE,YAAY,CAAC,KAAK;qBAC5B,CAAA;oBACL,EAAE,CAAC,CAAC,QAAA,SAAS,CAAC,CAAC,CAAC;wBACZ,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;oBAC3D,CAAC;oBACD,EAAE,CAAC,CAAC,QAAA,YAAY,IAAI,QAAA,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;wBAC7C,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;oBACzC,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACJ,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBACpC,CAAC;gBACL,CAAC;YACL,CAAC,CAAA;YAEO,sBAAiB,GAAG,UAAU,OAA0B;gBAC5D,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,IAAI,QAAA,QAAQ,CAAC,IAAI,CAAC,UAAU,OAAO;oBAC/B,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;gBACzC,CAAC,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC,CAAA;YAEO,2BAAsB,GAAG,UAAU,OAA0B;gBACjE,QAAA,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC,CAAA;YAEO,2BAAsB,GAAG,UAAU,OAAyB;gBAChE,IAAI,eAAe,GAAsB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBACnE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;oBAClB,EAAE,CAAC,CAAC,QAAA,SAAS,CAAC,CAAC,CAAC;wBACZ,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;oBAC9D,CAAC;oBACD,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;wBACvB,EAAE,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;4BAC1B,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;wBAClD,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,EAAE,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;4BAC5B,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC;gCAChC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;4BACrD,CAAC;4BACD,IAAI,CAAC,CAAC;gCACF,eAAe,CAAC,SAAS,EAAE,CAAC;4BAChC,CAAC;wBACL,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvB,CAAC;YACL,CAAC,CAAA;YAEO,mBAAc,GAAG;gBACrB,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;gBACpD,QAAA,YAAY,GAAG,QAAA,eAAe,CAAC,MAAM,CAAC;gBACtC,EAAE,CAAC,CAAC,QAAA,MAAM,CAAC,SAAS,IAAI,QAAA,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;oBAClD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvB,CAAC;YACL,CAAC,CAAA;YAES,iBAAY,GAAG;gBACrB,IAAI,IAAI,GAAwB,IAAI,CAAC;gBACrC,IAAI,CAAC;oBACD,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;wBACT,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;wBACpC,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;4BACpC,QAAA,cAAc,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;4BACvC,QAAA,cAAc,CAAC,SAAS,GAAG,UAAU,GAAG;gCACpC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;4BAClC,CAAC,CAAA;4BACD,IAAI,CAAC,sBAAsB,CAAoB;gCAC3C,IAAI,EAAE,mBAAmB;gCACzB,KAAK,EAAE;oCACH,OAAO,EAAE,QAAA,SAAS;iCACrB;6BACJ,CAAC,CAAC;4BACH,UAAU,CAAC;gCACP,EAAE,CAAC,CAAC,QAAA,YAAY,IAAI,QAAA,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;oCACzC,QAAA,YAAY,GAAG,QAAA,eAAe,CAAC,UAAU,CAAC;gCAC9C,CAAC;gCACD,EAAE,CAAC,CAAC,QAAA,MAAM,CAAC,SAAS,IAAI,QAAA,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;oCACjD,IAAI,CAAC,WAAW,EAAE,CAAC;gCACvB,CAAC;4BACL,CAAC,EAAE,GAAG,CAAC,CAAC;wBACZ,CAAC;wBACD,IAAI,CAAC,CAAC;4BACF,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC1B,CAAC;oBAEL,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC1B,CAAC;gBACL,CAAC;gBACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACR,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC1B,CAAC;YACL,CAAC,CAAA;YAiBO,wBAAmB,GAAG,UAAU,GAAG;gBACvC,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC;oBAC9B,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wBACZ,KAAK,cAAc;4BAAE,IAAI,CAAC,cAAc,EAAE,CAAC;4BACvC,KAAK,CAAC;oBACd,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,CAAC;oBACF,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1C,CAAC;YAEL,CAAC,CAAA;QACL,CAAC;QA7BW,0CAAY,GAApB,UAAqB,QAAgB;YACjC,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7D,IAAI,OAAO,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACtD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrD,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBACrB,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC5D,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC/C,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC3B,MAAM,CAAC,SAAS,CAAC;gBACrB,CAAC;YACL,CAAC;YACD,MAAM,CAAC,SAAS,CAAC;QACrB,CAAC;QAgBL,0BAAC;IAAD,CAAC,AArLD,IAqLC;IArLY,2BAAmB,sBAqL/B,CAAA;AACL,CAAC,EAzLM,OAAO,KAAP,OAAO,QAyLb;ACzLD,IAAO,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC7B,IAAO,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AACjC,IAAO,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7B,IAAO,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAG3B,IAAO,OAAO,CAuQb;AAvQD,WAAO,OAAO;IACV;QAA8B,4BAAmB;QAC7C,kBAAY,MAAa;YAAb,uBAAA,EAAA,aAAa;YAAzB,YACI,iBAAO,SAWV;YAGD;;;;;;;;eAQG;YACH,YAAM,GAAG,UAAU,MAAc,EAAE,SAA0B,EAAE,OAAwB;gBAApD,0BAAA,EAAA,gBAA0B;gBAAE,wBAAA,EAAA,cAAwB;gBACnF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAoB;oBACnC,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,MAAM;oBACb,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,OAAO;iBACnB,EAAE,KAAK,CAAC,CAAC;YACd,CAAC,CAAA;YAED;;;;;;;;eAQG;YACH,cAAQ,GAAG,UAAU,QAAyB,EAAE,SAA0B,EAAE,OAAwB;gBAApD,0BAAA,EAAA,gBAA0B;gBAAE,wBAAA,EAAA,cAAwB;gBAChG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAoB;oBACnC,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,OAAO;oBAChB,KAAK,EAAE,QAAQ;iBAClB,EAAE,KAAK,CAAC,CAAC;YACd,CAAC,CAAA;YAGD;;;;;;eAMG;YACH,YAAM,GAAG,UAAU,SAAmB,EAAE,OAAwB;gBAAxB,wBAAA,EAAA,cAAwB;gBAC5D,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAoB;oBACnC,IAAI,EAAE,SAAS;oBACf,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,OAAO;iBACnB,EAAE,UAAU,CAAC,CAAC;YACnB,CAAC,CAAA;YAED;;;;;;;;eAQG;YACH,YAAM,GAAG,UAAU,KAAc,EAAE,SAA0B,EAAE,OAAwB;gBAApD,0BAAA,EAAA,gBAA0B;gBAAE,wBAAA,EAAA,cAAwB;gBACnF,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1D,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBACpD,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACvC,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAoB;oBACnC,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,SAAS;iBACrB,EAAE,UAAU,CAAC,CAAC;YACnB,CAAC,CAAA;YAED;;;;;;;eAOG;YACH,WAAK,GAAG,UAAU,KAAa,EAAE,SAA0B,EAAE,OAAwB;gBAApD,0BAAA,EAAA,gBAA0B;gBAAE,wBAAA,EAAA,cAAwB;gBACjF,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1D,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClD,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACvC,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAoB;oBACnC,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,OAAO;iBACnB,EAAE,UAAU,CAAC,CAAC;YACnB,CAAC,CAAA;YAGD;;;;;;;eAOG;YACH,YAAM,GAAG,UAAU,KAAc,EAAE,SAA0B,EAAE,OAAwB;gBAApD,0BAAA,EAAA,gBAA0B;gBAAE,wBAAA,EAAA,cAAwB;gBACnF,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1D,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClD,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACvC,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAoB;oBACnC,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,OAAO;iBACnB,EAAE,UAAU,CAAC,CAAC;YACnB,CAAC,CAAA;YAED;;;;;;;eAOG;YACH,YAAM,GAAG,UAAU,KAAc,EAAE,SAA0B,EAAE,OAAwB;gBAApD,0BAAA,EAAA,gBAA0B;gBAAE,wBAAA,EAAA,cAAwB;gBACnF,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1D,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClD,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACvC,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAoB;oBACnC,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,OAAO;iBACnB,EAAE,UAAU,CAAC,CAAC;YACnB,CAAC,CAAA;YAED;;;;;;;eAOG;YACH,YAAM,GAAG,UAAU,KAAc,EAAE,SAA0B,EAAE,OAAwB;gBAApD,0BAAA,EAAA,gBAA0B;gBAAE,wBAAA,EAAA,cAAwB;gBACnF,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1D,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClD,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACvC,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAoB;oBACnC,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,OAAO;iBACnB,EAAE,UAAU,CAAC,CAAC;YACnB,CAAC,CAAA;YAED;;;;;;;eAOG;YACH,WAAK,GAAG,UAAU,SAAiB,EAAE,SAA0B,EAAE,OAAwB;gBAApD,0BAAA,EAAA,gBAA0B;gBAAE,wBAAA,EAAA,cAAwB;gBACrF,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAoB;oBAClD,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,SAAS;oBAChB,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,OAAO;iBACnB,EAAE,UAAU,CAAC,CAAC;YACnB,CAAC,CAAA;YAED;;;;;;;;eAQG;YACH,gBAAU,GAAG,UAAU,KAAc,EAAE,SAA0B,EAAE,OAAwB;gBAApD,0BAAA,EAAA,gBAA0B;gBAAE,wBAAA,EAAA,cAAwB;gBACvF,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1D,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClD,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1C,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAoB;oBACnC,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,OAAO;iBACnB,EAAE,UAAU,CAAC,CAAC;YACnB,CAAC,CAAA;YAED;;;;;eAKG;YACH,gBAAU,GAAG,UAAU,KAAc;gBACjC,IAAI,SAAS,GAAG,UAAU,GAAG;oBACzB,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBACvC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;oBAChB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;oBACrC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;wBACpB,iBAAiB,EAAE,CAAC;oBACxB,CAAC;gBACL,CAAC,EACG,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,EAC1B,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC3C,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;gBAClD,IAAI,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClD,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;oBACb,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM;wBACxC,IAAI,CAAC,OAAO,CAAoB;4BAC5B,IAAI,EAAE,aAAa;4BACnB,KAAK,EAAE,KAAK;4BACZ,SAAS,EAAE,SAAS;4BACpB,OAAO,EAAE,OAAO;yBACnB,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG;4BAC7B,SAAS,CAAC,GAAG,CAAC,CAAC;4BACf,OAAO,EAAE,CAAC;wBACd,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG;4BAClB,MAAM,CAAC,GAAG,CAAC,CAAC;wBAChB,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC;gBACD,IAAI,CAAC,CAAC;oBACF,IAAI,CAAC,OAAO,CAAoB;wBAC5B,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE,KAAK;wBACZ,SAAS,EAAE,SAAS;wBACpB,OAAO,EAAE,OAAO;qBACnB,EAAE,UAAU,CAAC,CAAC;gBACnB,CAAC;YAEL,CAAC,CAAA;YAjQG,EAAE,CAAC,CAAC,QAAA,YAAY,IAAI,QAAA,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC7C,QAAA,cAAc,CAAC,SAAS,EAAE,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,QAAA,YAAY,IAAI,QAAA,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;gBAClD,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpB,CAAC;YACD,KAAI,CAAC,YAAY,EAAE,CAAC;YACpB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBACT,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;;QACL,CAAC;QAwPL,eAAC;IAAD,CAAC,AArQD,CAA8B,QAAA,mBAAmB,GAqQhD;IArQY,gBAAQ,WAqQpB,CAAA;AACL,CAAC,EAvQM,OAAO,KAAP,OAAO,QAuQb;AC7QD,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;QACxB,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,kDAAkD,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,EACpB,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC5C,aAAa,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC,CAAC;IACF,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC;IAC1D,QAAQ,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC","sourcesContent":["/** JsStore.js - v1.2.6 - 14/11/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n\r\n export enum WhereQryOption {\r\n In = \"In\",\r\n Like = \"Like\",\r\n Or = \"Or\"\r\n }\r\n\r\n export enum DataType {\r\n String = \"string\",\r\n Object = \"object\",\r\n Array = \"array\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder,\r\n GroupBy: any,\r\n Aggregate: {\r\n Max: any,\r\n Min: any,\r\n Count: any,\r\n Sum: any,\r\n Avg: any\r\n },\r\n IgnoreCase: boolean\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n IgnoreCase: boolean,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipDataCheck\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n\r\n export interface IAggregate {\r\n Max: Array,\r\n Min: Array,\r\n Sum: Array,\r\n Count: Array,\r\n Avg: Array\r\n }\r\n\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n}","module JsStore {\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function = null) {\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n else {\r\n if (errCallBack) {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BaseHelper {\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n\r\n protected sortNumberInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a - b;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortNumberInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b - a;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b.toLowerCase().localeCompare(a.toLowerCase());\r\n });\r\n return values;\r\n };\r\n\r\n private getCombination(word: string) {\r\n var Results = [],\r\n doAndPushCombination = function (word: string, chars, index: number) {\r\n if (index == word.length) {\r\n Results.push(chars.join(\"\"));\r\n } else {\r\n var ch = word.charAt(index);\r\n chars[index] = ch.toLowerCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n chars[index] = ch.toUpperCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n }\r\n };\r\n doAndPushCombination(word, [], 0);\r\n return Results;\r\n }\r\n\r\n protected getAllCombinationOfWord(word, isArray) {\r\n if (isArray) {\r\n var Results = [];\r\n for (var i = 0, length = word.length; i < length; i++) {\r\n Results = Results.concat(this.getCombination(word[i]))\r\n }\r\n return Results;\r\n }\r\n else {\r\n return this.getCombination(word);\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base extends BaseHelper {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.Query.IgnoreCase === true) {\r\n this.Query.Where = this.makeQryInCaseSensitive(this.Query.Where);\r\n }\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In':\r\n this.executeInLogic(Column, Value['In']);\r\n break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n case 'Aggregate': break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected makeQryInCaseSensitive = function (qry) {\r\n var Results = [],\r\n Qry;\r\n for (var item in qry) {\r\n Qry = qry[item];\r\n switch (item) {\r\n case WhereQryOption.In:\r\n for (var value in Qry) {\r\n Results = Results.concat(this.getAllCombinationOfWord(Qry['In'], true));\r\n }\r\n break;\r\n case WhereQryOption.Like: break;\r\n default:\r\n Results = Results.concat(this.getAllCombinationOfWord(Qry));\r\n }\r\n qry[item] = {\r\n In: Results\r\n }\r\n Results = [];\r\n }\r\n return qry;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n DbConnection.close();\r\n setTimeout(function () {\r\n That.deleteDb(name, onSuccess, onError);\r\n }, 100);\r\n }\r\n\r\n deleteDb = function (name: string, onSuccess: Function, onError: Function) {\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"database is blocked, cant be deleted right now.\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n onSuccess();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class InsertHelper extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n protected checkModifyInsertValues = function (table, values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n Value,\r\n TableName = table.Name,\r\n checkDatas = function () {\r\n Value = values[ValueIndex++];\r\n checkInternal();\r\n },\r\n checkInternal = function () {\r\n if (Value) {\r\n checkAndModifyValue();\r\n }\r\n else {\r\n That.insertData(values);\r\n }\r\n },\r\n checkAndModifyValue = function () {\r\n var Index = 0,\r\n checkAndModifyColumn = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(Value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof Value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n Value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && Value[column.Name] == null) { //check Default Schema\r\n Value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n }\r\n else {\r\n checkDatas();\r\n }\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n }\r\n checkDatas();\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends InsertHelper {\r\n private insertData = function (values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable: Function;\r\n if (IsReturn) {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n That.ValuesAffected.push(value);\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n ++That.RowAffected;\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n }\r\n }\r\n }\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n var ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var Table = this.getTable(query.Into);\r\n if (Table) {\r\n if (this.Query.SkipDataCheck) {\r\n this.insertData(this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n else {\r\n this.checkModifyInsertValues(Table, this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BulkInsert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private bulkinsertData = function () {\r\n var That = this;\r\n this.Transaction = DbConnection.transaction([this.Query.Into], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(this.Query.Into);\r\n this.Transaction.oncomplete = function (e) {\r\n That.OnSuccess();\r\n }\r\n this.Query.Values.forEach(function (value) {\r\n That.ObjectStore.add(value);\r\n });\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.bulkinsertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.executeLogic(request);\r\n break;\r\n case 'change_log_status':\r\n this.changeLogStatus(request);\r\n default:\r\n switch (Status.ConStatus) {\r\n case ConnectionStatus.Connected: {\r\n this.executeLogic(request);\r\n }; break;\r\n case ConnectionStatus.Closed: {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }; break;\r\n }\r\n }\r\n }\r\n\r\n private changeLogStatus = function (request) {\r\n if (request.Query['logging'] === true) {\r\n EnableLog = true;\r\n }\r\n else {\r\n EnableLog = false;\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'bulk_insert': this.bulkInsert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'export_json': this.exportJson(request.Query, OnSuccess, OnError);\r\n break;\r\n default: console.error('The Api:-' + request.Name + 'does not support');\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public bulkInsert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new BulkInsert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n\r\n public exportJson = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n this.select(query, function (results) {\r\n var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], {\r\n type: \"text/json\"\r\n }));\r\n onSuccess(Url);\r\n }, function (err) {\r\n onError(err);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class In extends NotWhere {\r\n\r\n private executeSkipAndLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n skipOrPush(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkipForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n skipOrPush((Cursor.value));\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeSimpleForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n protected executeInLogic = function (column, values) {\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimitForIn(column, values);\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkipForIn(column, values);\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimitForIn(column, values);\r\n }\r\n else {\r\n this.executeSimpleForIn(column, values);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class GroupByHelper extends Where {\r\n constructor() {\r\n super();\r\n }\r\n\r\n private executeAggregateGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = undefined;\r\n //assign aggregate and free aggregate memory\r\n var AggregateQry = this.Query.Aggregate;\r\n this.Query.Aggregate = undefined;\r\n var Index, ObjKey, Value, AggrColumn;\r\n var calculateAggregate = function () {\r\n for (var prop in AggregateQry) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Max(\" + AggrColumn + \")\"] : 0;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n //compare between old value and new value\r\n return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Min(\" + AggrColumn + \")\"] : Infinity;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity;\r\n //compare between old value and new value\r\n return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old sum value\r\n var Sum = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = Sum;\r\n //get old count value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = Value;\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n getAvg();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (typeof GrpQry == 'string') {\r\n for (Index in Datas) {\r\n ObjKey = Datas[Index][GrpQry];\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n }\r\n else {\r\n for (Index in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[Index][GrpQry[column]];\r\n }\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (var i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n //Checking for avg and if exist then fill the datas;\r\n if (AggregateQry.Avg) {\r\n if (typeof AggregateQry.Avg == 'string') {\r\n for (Index in Datas) {\r\n var Sum = Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"],\r\n Count = Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n Datas[Index][\"Avg(\" + AggregateQry.Avg + \")\"] = Sum / Count;\r\n if (AggregateQry.Count !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n }\r\n if (AggregateQry.Sum !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"];\r\n }\r\n }\r\n }\r\n else {\r\n var IsCountTypeString = typeof AggregateQry.Count,\r\n IsSumTypeString = typeof AggregateQry.Count;\r\n for (Index in Datas) {\r\n for (var column in AggregateQry.Avg) {\r\n var AvgColumn = AggregateQry.Avg[column],\r\n Sum = Datas[Index][\"Sum(\" + AvgColumn + \")\"],\r\n Count = Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n Datas[Index][\"Avg(\" + AvgColumn + \")\"] = Sum / Count;\r\n\r\n if (IsCountTypeString) {\r\n if (AggregateQry.Count !== AvgColumn) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Count.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n\r\n if (IsSumTypeString) {\r\n if (AggregateQry.Sum !== AvgColumn) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.Results = Datas;\r\n };\r\n\r\n protected processGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = this.Query.GroupBy = undefined;\r\n if (typeof GrpQry == 'string') {\r\n for (var i in Datas) {\r\n LookUpObj[Datas[i][GrpQry]] = Datas[i];\r\n }\r\n }\r\n else {\r\n var ObjKey;\r\n for (var i in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[i][GrpQry[column]];\r\n }\r\n LookUpObj[ObjKey] = Datas[i];\r\n }\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Helper extends GroupByHelper {\r\n processOrderBy = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private processAggregateQry = function () {\r\n var Datas = this.Results,\r\n Results = {},\r\n Key;\r\n //free results memory\r\n this.Results = undefined;\r\n for (var prop in this.Query.Aggregate) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key] ? 1 : 0;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result = Result > Datas[i][Key] ? Result : Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n var Result = Infinity, Value = Infinity;\r\n for (var i in Datas) {\r\n Value = Datas[i][Key] ? Datas[i][Key] : Infinity;\r\n Result = Result < Value ? Result : Value;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result / Datas.length;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n //add results to the first index of result\r\n for (var prop in Results) {\r\n Datas[0][prop] = Results[prop];\r\n }\r\n this.Results = Datas;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Helper {\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.processOrderBy();\r\n if (this.Query.GroupBy) {\r\n if (this.Query.Aggregate) {\r\n this.executeAggregateGroupBy();\r\n }\r\n else {\r\n this.processGroupBy();\r\n }\r\n }\r\n else if (this.Query.Aggregate) {\r\n this.processAggregateQry();\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.count(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n That.ResultCount += (e).target.result;\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (That.CheckFlag) {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n protected onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this,\r\n Cursor: IDBCursorWithValue;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected pushApi = function (request: IWebWorkerRequest, usePromise: boolean) {\r\n if (usePromise === true) {\r\n var That = this;\r\n return new Promise(function (resolve, reject) {\r\n request.OnSuccess = function (result) {\r\n resolve(result);\r\n };\r\n request.OnError = function (error) {\r\n reject(error);\r\n };\r\n That.prcoessExecutionOfCode(request);\r\n });\r\n }\r\n else {\r\n this.prcoessExecutionOfCode(request);\r\n return this;\r\n }\r\n }\r\n\r\n private prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.RequestQueue.splice(0, 0, request);\r\n if (WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n };\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n break;\r\n default: this.RequestQueue.push(request);\r\n }\r\n }\r\n else {\r\n this.RequestQueue.push(request);\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n if (EnableLog) {\r\n console.log(\"request pushed: \" + request.Name);\r\n }\r\n\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + FirstRequest.Name)\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n protected createWorker = function () {\r\n var That: CodeExecutionHelper = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n That.executeCodeUsingWorker({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n That.executeCode();\r\n }\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\ndeclare var Promise: any;\r\n\r\nmodule JsStore {\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n WorkerInstance.terminate();\r\n }\r\n else if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n KeyStore.init();\r\n }\r\n this.createWorker();\r\n if (dbName) {\r\n this.openDb(dbName);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * open database\r\n * \r\n * @param {string} dbName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n openDb = function (dbName: string, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'open_db',\r\n Query: dbName,\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n }, false);\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {Model.IDataBase} dataBase \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n createDb = function (dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n }, false);\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb = function (onSuccess: Function, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select = function (query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onSuccess = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onSuccess\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count = function (query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update = function (query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete = function (query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear = function (tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.prcoessExecutionOfCode({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * insert bulk amount of data\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n bulkInsert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n var UsePromise = onSuccess ? false : true;\r\n query.OnSuccess = query.OnError = null;\r\n return this.pushApi({\r\n Name: 'bulk_insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * export the result in json file\r\n * \r\n * @param {ISelect} qry \r\n * @memberof Instance\r\n */\r\n exportJson = function (query: ISelect) {\r\n var OnSuccess = function (url) {\r\n var Link = document.createElement(\"a\");\r\n Link.href = url;\r\n Link.download = query.From + \".json\";\r\n Link.click();\r\n if (OnSuccessCallBack) {\r\n OnSuccessCallBack();\r\n }\r\n },\r\n OnError = query['OnError'],\r\n OnSuccessCallBack = query['OnSuccess'];\r\n query['OnSuccess'] = query['OnError'] = undefined;\r\n var UsePromise = OnSuccessCallBack ? false : true;\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise).then(function (url) {\r\n OnSuccess(url);\r\n resolve();\r\n }).catch(function (err) {\r\n reject(err);\r\n });\r\n });\r\n }\r\n else {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","if (self && !self.alert) {\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name: \" + e.data.Name);\r\n }\r\n var Request = e.data,\r\n IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered;\r\n KeyStore.init();\r\n}\r\n\r\n"]} \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.6/JsStore-1.2.6.min.js b/Dist/V 1.2/V 1.2.6/JsStore-1.2.6.min.js deleted file mode 100644 index 884e452c..00000000 --- a/Dist/V 1.2/V 1.2.6/JsStore-1.2.6.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.2.6 - 14/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var r=this;new e.Business.Main(function(e){r.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var r=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?r.OnError?r.OnError(t.ErrorDetails):console.log(t.ErrorDetails):r.OnSuccess&&(null!=t.ReturnedValue?r.OnSuccess(t.ReturnedValue):r.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,r){var n=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(r));n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},n.onsuccess=function(t){var r=t.target.result;r&&(e.Results=r.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([r.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(r.From),s.Transaction.oncomplete=function(e){null!=n&&n(u.Results)},s.get(),s}return __extends(r,t),r}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.setData=function(e){var t=this,r=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var n=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));n.onsuccess=function(t){var n=t.target.result;n?(n.value.Value=e.Value,n.update(n.value)):r()},n.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([r.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(r.TableName),s.Transaction.oncomplete=function(e){null!=n&&n()},s.setData(r.Set)}catch(e){console.error(e)}return s}return __extends(r,t),r}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,r){var n=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(r));n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},n.onsuccess=function(t){var r=t.target.result;r&&(r.delete(),++e.RowAffected,r.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([r.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(r.From),s.Transaction.oncomplete=function(){null!=n&&n(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(r,t),r}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var r=function(){return function(r,n,o,s){var u=self.indexedDB.open(r,1);u.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},u.onsuccess=function(r){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(r){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(n,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=r}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var r=function(){return function(r){void 0===r&&(r=null),this.checkConnectionAndExecuteLogic=function(r){if("create_db"==r.Name||"open_db"==r.Name)this.executeLogic(r);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(r);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)n=this,setTimeout(function(){n.checkConnectionAndExecuteLogic(r)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var n=this;this.createDb(e.TableName,function(){n.checkConnectionAndExecuteLogic(r)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,r=function(e){t.returnResult({ReturnedValue:e})},n=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,r,n);break;case"set":this.set(e.Query,r,n);break;case"remove":this.remove(e.Query,r,n);break;case"create_db":this.createDb(e.Query,r,n)}},this.set=function(e,r,n){new t.Set(e,r,n)},this.remove=function(e,r,n){new t.Remove(e,r,n)},this.get=function(e,r,n){new t.Get(e,r,n)},this.createDb=function(e,r,n){new t.InitDb("KeyStore",e,r,n)},this.OnSuccess=r}}();t.Main=r}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,r,n){void 0===n&&(n=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:r,OnError:n}),this},e.set=function(t,r,n,o){void 0===n&&(n=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:r}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:n,OnError:o}),this},e.remove=function(t,r,n){void 0===r&&(r=null),void 0===n&&(n=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:r,OnError:n}),this}}(KeyStore||(KeyStore={}));var JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.In="In",e.Like="Like",e.Or="Or"}(e.WhereQryOption||(e.WhereQryOption={}));!function(e){e.String="string",e.Object="object",e.Array="array"}(e.DataType||(e.DataType={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.TempResults=[],e.throwError=function(e){throw e},e.getObjectFirstKey=function(e){for(var t in e)return t;return null}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,r){var n={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:n.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:n.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:n.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:n.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:n.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:n.Message="No value supplied";break;case e.ErrorType.InvalidOp:n.Message="Invalid Op Value '"+r.Op+"'";break;case e.ErrorType.ColumnNotExist:n.Message="Column '"+r.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:n.Message="Null value is not allowed for column '"+r.ColumnName+"'";break;case e.ErrorType.BadDataType:n.Message="Supplied value for column '"+r.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:n.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:n.Message="Table '"+r.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:n.Message="Database '"+r.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return n},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),r=t.length;r--;){var n=t[r];e[n.toLowerCase()]=e[n],delete e[n]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,r,n){if(void 0===n&&(n=null),e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){"string"==typeof t?e.getDbVersion(t,function(e){r(Boolean(e))}):e.getDbVersion(t.DbName,function(e){r(t.Table.Version<=e)})}else if(n){var o={Name:e.Status.LastError,Message:""};switch(o.Name){case e.ErrorType.IndexedDbBlocked:o.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:o.Message="IndexedDB is not supported"}n(o)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})},e.disableLog=function(){e.EnableLog=!1,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(t,r){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+r),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=r}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){function r(e,r){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var n=this;e.Columns.forEach(function(r){n.Columns.push(new t.Column(r,e.Name))}),this.setRequireDelete(r),this.setDbVersion(r),this.setPrimaryKey(r)}return r.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},r.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:er.Version?e.DbVersion:r.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+r.Name+"_Version",e.DbVersion),r.Version=e.DbVersion},r}();t.Table=r}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var r=this;this.Name=t.Name,t.Tables.forEach(function(t){r.Tables.push(new e.Table(t,r.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){function t(){this.getTable=function(t){var r;return e.ActiveDataBase.Tables.every(function(e){return e.Name!=t||(r=e,!1)}),r},this.getKeyRange=function(e,t){var r;switch(t){case"-":r=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":r=IDBKeyRange.lowerBound(e,!0);break;case">=":r=IDBKeyRange.lowerBound(e);break;case"<":r=IDBKeyRange.upperBound(e,!0);break;case"<=":r=IDBKeyRange.upperBound(e);break;default:r=IDBKeyRange.only(e)}return r},this.getObjectSecondKey=function(e){var t=!1;for(var r in e){if(t)return r;t=!0}},this.getPrimaryKey=function(e){var t=this.getTable(e).PrimaryKey;return t||this.getKeyPath()},this.getKeyPath=function(t){return e.DbConnection.transaction([t],"readonly").objectStore(t).keyPath},this.sortNumberInAsc=function(e){return e.sort(function(e,t){return e-t}),e},this.sortNumberInDesc=function(e){return e.sort(function(e,t){return t-e}),e},this.sortAlphabetInAsc=function(e){return e.sort(function(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}),e},this.sortAlphabetInDesc=function(e){return e.sort(function(e,t){return t.toLowerCase().localeCompare(e.toLowerCase())}),e}}return t.prototype.getCombination=function(e){var t=[],r=function(e,n,o){if(o==e.length)t.push(n.join(""));else{var s=e.charAt(o);n[o]=s.toLowerCase(),r(e,n,o+1),n[o]=s.toUpperCase(),r(e,n,o+1)}};return r(e,[],0),t},t.prototype.getAllCombinationOfWord=function(e,t){if(t){for(var r=[],n=0,o=e.length;n1||Object.keys(this.Query.Where).length>1);var n=e.getObjectFirstKey(r);switch(n){case"Like":var o=r.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":this.executeInLogic(t,r.In);break;case"-":case">":case"<":case">=":case"<=":this.executeWhereLogic(t,r,n);break;case"Aggregate":break;default:this.executeWhereLogic(t,r)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,r)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)},r.makeQryInCaseSensitive=function(t){var r,n=[];for(var o in t){switch(r=t[o],o){case e.WhereQryOption.In:for(var s in r)n=n.concat(this.getAllCombinationOfWord(r.In,!0));break;case e.WhereQryOption.Like:break;default:n=n.concat(this.getAllCombinationOfWord(r))}t[o]={In:n},n=[]}return t},r}return __extends(r,t),r.prototype.checkForWhereConditionMatch=function(t){var r=this.Query.Where,n=!0;for(var o in r){var s=r[o];if(!n)break;if("object"==typeof s)for(var u in s){if(!n)break;switch(u){case"In":!function(e,t){for(var o=r[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(i=o.indexOf(u.toLowerCase()))<0&&(n=!1);break;case e.Occurence.First:((i=o.indexOf(u.toLowerCase()))>0||i<0)&&(n=!1);break;default:(i=o.lastIndexOf(u.toLowerCase()))":case"<":case">=":case"<=":!function(e,t,o){var s=r[e][o];switch(o){case">":t<=s&&(n=!1);break;case"<":t>=s&&(n=!1);break;case"<=":t>s&&(n=!1);break;case">=":ts.High)&&(n=!1)}}(o,t[o],u)}}else if(s!=t[o]){n=!1;break}}return n},r}(t.BaseHelper);t.Base=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){var s=[],u=indexedDB.open(t.ActiveDataBase.Name,r);u.onerror=function(e){null!=o&&o(e.target.error)},u.onsuccess=function(r){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=n&&n(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},u.onupgradeneeded=function(e){var r=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(r.objectStoreNames.contains(e.Name)&&r.deleteObjectStore(e.Name),i(r,e)):e.RequireCreation&&i(r,e)})};var i=function(e,r){try{if(r.PrimaryKey.length>0)n=e.createObjectStore(r.Name,{keyPath:r.PrimaryKey}),r.Columns.forEach(function(e){e.PrimaryKey?n.createIndex(e.Name,e.Name,{unique:!0}):n.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_"+e.Name+"_Value",0)});else{var n=e.createObjectStore(r.Name,{autoIncrement:!0});r.Columns.forEach(function(e){n.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_"+e.Name+"_Value",0)})}s.push(r.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_Version",r.Version)}catch(e){console.error(e)}}}}();t.CreateDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){this.deleteDb=function(r,n,o){var s=indexedDB.deleteDatabase(r);s.onblocked=function(){null!=o&&o("database is blocked, cant be deleted right now.")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(r){r.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+r.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),n()}};var s=this;t.DbConnection.close(),setTimeout(function(){s.deleteDb(r,n,o)},100)}}();t.DropDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(){var n=null!==r&&r.apply(this,arguments)||this;return n.ValuesAffected=[],n.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},n.checkModifyInsertValues=function(r,n){var o,s=this,u=0,i=r.Name,c=function(){o=n[u++],a()},a=function(){o?l():s.insertData(n)},l=function(){var n=0,u=function(a){if(a){var l=function(t,r){s.ErrorOccured=!0,s.Error=e.Utils.getError(t,r)},h=function(){a.NotNull&&e.isNull(o[a.Name])?l(e.ErrorType.NullValue,{ColumnName:a.Name}):a.DataType&&typeof o[a.Name]!=a.DataType&&l(e.ErrorType.BadDataType,{ColumnName:a.Name}),u(r.Columns[n++])};s.ErrorOccured?s.onErrorOccured(s.Error,!0):a.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",function(e){o[a.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",e),h()}):a.Default&&null==o[a.Name]?(o[a.Name]=a.Default,h()):h()}else c()};u(r.Columns[n++])};c()},n}return __extends(n,r),n}(t.Base);t.InsertHelper=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(n,o,s){var u=r.call(this)||this;u.insertData=function(e){var r,n=this,o=0,s=this.Query.Return;r=s?function(t){if(t){var s=u.add(t);s.onerror=function(e){n.onErrorOccured(e)},s.onsuccess=function(s){n.ValuesAffected.push(t),r(e[o++])}}}:function(t){if(t){var s=u.add(t);s.onerror=function(e){n.onErrorOccured(e)},s.onsuccess=function(t){++n.RowAffected,r(e[o++])}}},n.Transaction=t.DbConnection.transaction([n.Query.Into],"readwrite");var u=n.Transaction.objectStore(n.Query.Into);n.Transaction.oncomplete=function(e){n.onTransactionCompleted()},r(e[o++])};try{u.Query=n,u.OnSuccess=o,u.OnError=s;var i=u.getTable(n.Into);if(i)u.Query.SkipDataCheck?(u.insertData(u.Query.Values),u.Query.Values=void 0):(u.checkModifyInsertValues(i,u.Query.Values),u.Query.Values=void 0);else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:n.Into})}return u}return __extends(n,r),n}(t.InsertHelper);t.Insert=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(n,o,s){var u=r.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.bulkinsertData=function(){var e=this;this.Transaction=t.DbConnection.transaction([this.Query.Into],"readwrite"),this.ObjectStore=this.Transaction.objectStore(this.Query.Into),this.Transaction.oncomplete=function(t){e.OnSuccess()},this.Query.Values.forEach(function(t){e.ObjectStore.add(t)})};try{u.Query=n,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(n.Into),u.Table)u.bulkinsertData();else{var i=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n.Into});e.throwError(i)}}catch(e){u.onExceptionOccured(e,{TableName:n.Into})}return u}return __extends(n,r),n}(t.Base);t.BulkInsert=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,r);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(r){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=n&&n()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([r],"readwrite").objectStore(r).clear();return i.onsuccess=function(t){u.getTable(r).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.remove("JsStore_"+e.ActiveDataBase.Name+"_"+r+"_"+t.Name+"_Value")}),null!=n&&n()},i.onerror=function(e){null!=o&&o()},s}return __extends(r,t),r}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r){void 0===r&&(r=null),this.checkConnectionAndExecuteLogic=function(r){switch(e.EnableLog&&console.log("checking connection and executing request:"+r.Name),r.Name){case"create_db":case"open_db":this.executeLogic(r);break;case"change_log_status":this.changeLogStatus(r);default:switch(e.Status.ConStatus){case e.ConnectionStatus.Connected:this.executeLogic(r);break;case e.ConnectionStatus.Closed:var n=this;this.openDb(t.ActiveDataBase.Name,function(){n.checkConnectionAndExecuteLogic(r)})}}},this.changeLogStatus=function(t){!0===t.Query.logging?e.EnableLog=!0:e.EnableLog=!1},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,r=function(e){t.returnResult({ReturnedValue:e})},n=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,r,n);break;case"insert":this.insert(e.Query,r,n);break;case"update":this.update(e.Query,r,n);break;case"delete":this.delete(e.Query,r,n);break;case"open_db":this.openDb(e.Query,r,n);break;case"create_db":this.createDb(e.Query,r,n);break;case"clear":this.clear(e.Query,r,n);break;case"drop_db":this.dropDb(r,n);break;case"count":this.count(e.Query,r,n);break;case"bulk_insert":this.bulkInsert(e.Query,r,n);break;case"export_json":this.exportJson(e.Query,r,n);break;default:console.error("The Api:-"+e.Name+"does not support")}},this.openDb=function(r,n,o){KeyStore.get("JsStore_"+r+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:r});KeyStore.get("JsStore_"+r+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,n,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,r){new t.DropDb(t.ActiveDataBase.Name,e,r)},this.update=function(e,r,n){new t.Update.Instance(e,r,n)},this.insert=function(r,n,o){Array.isArray(r.Values)?new t.Insert(r,n,o):e.throwError("Value should be array :- supplied value is not array")},this.bulkInsert=function(r,n,o){Array.isArray(r.Values)?new t.BulkInsert(r,n,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,r,n){new t.Delete.Instance(e,r,n)},this.select=function(e,r,n){"object"==typeof e.From?new t.Select.Join(e,r,n):new t.Select.Instance(e,r,n)},this.count=function(e,r,n){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,r,n)):new t.Count.Instance(e,r,n)},this.createDb=function(r,n,o){KeyStore.get("JsStore_"+r.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(r);var u=function(){setTimeout(function(){var r=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_Version",function(s){s==r.Version?new t.CreateDb(e.DbVersion,n,o):u()})},200)};u()})},this.clear=function(e,r,n){new t.Clear(e,r,n)},this.exportJson=function(e,t,r){this.select(e,function(e){var r=URL.createObjectURL(new Blob([JSON.stringify(e)],{type:"text/json"}));t(r)},function(e){r(e)})},this.OnSuccess=r}}();t.Main=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.Sorted=!1,t.CheckFlag=!1,t.removeDuplicates=function(){var e=this.Results;this.Results=void 0;var t=this.getPrimaryKey(this.Query.From),r={};for(var n in e)r[e[n][t]]=e[n];e=[];for(n in r)e.push(r[n]);this.Results=e},t}return __extends(t,e),t}(e.Base);t.BaseSelect=r}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var r=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeWhereUndefinedLogic=function(){var t,r,n=this;if(this.Query.Order&&this.Query.Order.By)if(n.ObjectStore.indexNames.contains(this.Query.Order.By)){var o=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,r=this.ObjectStore.index(n.Query.Order.By).openCursor(null,o)}else{var s=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(s)}else r=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(r){(t=r.target.result)&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(t.value),t.continue()):(e=!0,t.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(r){(t=r.target.result)&&(e?(n.Results.push(t.value),t.continue()):(e=!0,t.advance(n.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){(t=e.target.result)&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:r.onsuccess=function(e){(t=e.target.result)&&(n.Results.push(t.value),t.continue())},r.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},r}return __extends(r,t),r}(t.BaseSelect);t.NotWhere=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeSkipAndLimitForIn=function(e,t){var r,n=this.SkipRecord,o=this,s=this.ObjectStore.index(e),u=function(e){0==n?o.Results.push(e):--n};if(o.CheckFlag)for(var i=0,c=t.length;i=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},r.executeSkipAndLimit=function(){var e,t=this.SkipRecord,r=this,n=function(e){0==t?r.Results.push(e):--t};r.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,r.Results.length!=r.LimitRecord&&e&&(r.filterOnOccurence(e.value)&&r.checkForWhereConditionMatch(e.value)&&n(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,r.Results.length!=r.LimitRecord&&e&&(r.filterOnOccurence(e.value)&&n(e.value),e.continue())}},r.executeSkip=function(){var e,t=this.SkipRecord,r=this,n=function(e){0==t?r.Results.push(e):--t};r.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(r.filterOnOccurence(e.value)&&r.checkForWhereConditionMatch(e.value)&&n(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(r.filterOnOccurence(e.value)&&n(e.value),e.continue())}},r.executeLimit=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(r){e=r.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(r){e=r.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},r.executeSimple=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(r){(e=r.target.result)&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(r){(e=r.target.result)&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},r.executeLikeLogic=function(e,t,r){var n=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n,o,s=this;t=r?t[r]:t,(n=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r))).onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?function(){var e=!1;s.CheckFlag?n.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:n.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;s.CheckFlag?n.onsuccess=function(t){(o=t.target.result)&&(e?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:n.onsuccess=function(t){(o=t.target.result)&&(e?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.LimitRecord?s.CheckFlag?n.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&s.checkForWhereConditionMatch(o.value)&&(s.Results.push(o.value),o.continue())}:n.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&(s.Results.push(o.value),o.continue())}:s.CheckFlag?n.onsuccess=function(e){(o=e.target.result)&&(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue())}:n.onsuccess=function(e){(o=e.target.result)&&(s.Results.push(o.value),o.continue())}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,r){var n,o=this,s=[],u=0,i=(r.Column,o.Results),c=i.length;new e.Instance({From:r.Table,Where:r.Where,Order:r.Order},function(e){e.forEach(function(e,r){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,n){if(s[u]={},e==t[r.Column]){s[u][r.Table]=t;for(c=0;cn.CurrentQueryStackIndex+1?n.startExecutionJoinLogic():n.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;in.CurrentQueryStackIndex+1?n.startExecutionJoinLogic():n.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][r.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},r}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=e.call(this)||this;return t.executeAggregateGroupBy=function(){var e=this.Query.GroupBy,t=this.Results,r={};this.Results=void 0;var n=this.Query.Aggregate;this.Query.Aggregate=void 0;var o,s,u,i,c=function(){for(var e in n)switch(e){case"Count":var c=function(){return u=r[s],u=u?u["Count("+i+")"]:0,u+=t[o][i]?1:0};if("string"==typeof n[e])i=n[e],t[o]["Count("+i+")"]=c();else if(Array.isArray(n[e]))for(var a in n[e])i=n[e][a],t[o]["Count("+i+")"]=c();break;case"Max":var l=function(){return u=r[s],u=u?u["Max("+i+")"]:0,t[o][i]=t[o][i]?t[o][i]:0,u>t[o][i]?u:t[o][i]};if("string"==typeof n[e])i=n[e],t[o]["Max("+i+")"]=l();else if(Array.isArray(n[e]))for(var a in n[e])i=n[e][a],t[o]["Max("+i+")"]=l();break;case"Min":var h=function(){return u=r[s],u=u?u["Min("+i+")"]:1/0,t[o][i]=t[o][i]?t[o][i]:1/0,u0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,r=e.By;"string"==typeof this.Results[0][r]?"asc"==e.Type?t.Results.sort(function(e,t){return e[r].toLowerCase().localeCompare(t[r].toLowerCase())}):t.Results.sort(function(e,t){return t[r].toLowerCase().localeCompare(e[r].toLowerCase())}):"number"==typeof this.Results[0][r]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[r]-t[r]}):t.Results.sort(function(e,t){return t[r]-e[r]}))}},t.processAggregateQry=function(){var e,t=this.Results,r={};this.Results=void 0;for(var n in this.Query.Aggregate)switch(n){case"Count":var o=function(){var r=0;for(var n in t)r+=t[n][e]?1:0;return r};if("string"==typeof this.Query.Aggregate[n])r["Count("+(e=this.Query.Aggregate[n])+")"]=o();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Count("+(e=this.Query.Aggregate[n][s])+")"]=o();break;case"Max":var u=function(){var r=0;for(var n in t)r=r>t[n][e]?r:t[n][e];return r};if("string"==typeof this.Query.Aggregate[n])r["Max("+(e=this.Query.Aggregate[n])+")"]=u();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Max("+(e=this.Query.Aggregate[n][s])+")"]=u();break;case"Min":var i=function(){var r=1/0,n=1/0;for(var o in t)r=r<(n=t[o][e]?t[o][e]:1/0)?r:n;return r};if("string"==typeof this.Query.Aggregate[n])r["Min("+(e=this.Query.Aggregate[n])+")"]=i();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Min("+(e=this.Query.Aggregate[n][s])+")"]=i();break;case"Sum":var c=function(){var r=0;for(var n in t)r+=t[n][e];return r};if("string"==typeof this.Query.Aggregate[n])r["Sum("+(e=this.Query.Aggregate[n])+")"]=c();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Sum("+(e=this.Query.Aggregate[n][s])+")"]=c();break;case"Avg":var a=function(){var r=0;for(var n in t)r+=t[n][e];return r/t.length};if("string"==typeof this.Query.Aggregate[n])r["Avg("+(e=this.Query.Aggregate[n])+")"]=a();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Avg("+(e=this.Query.Aggregate[n][s])+")"]=a()}for(var n in r)t[0][n]=r[n];this.Results=t},t}return __extends(t,e),t}(e.GroupByHelper);e.Helper=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(n,o,s){var u=r.call(this)||this;u.onTransactionCompleted=function(){this.SendResultFlag&&(this.processOrderBy(),this.Query.GroupBy?this.Query.Aggregate?this.executeAggregateGroupBy():this.processGroupBy():this.Query.Aggregate&&this.processAggregateQry(),this.OnSuccess(this.Results))},u.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readonly"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.orQuerySuccess=function(){this.Results=this.OrInfo.Results,this.OrInfo.Results=void 0,this.removeDuplicates(),this.OrInfo.OnSucess(this.Results)},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess,Results:[]},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){if(this.OrInfo.Results=this.OrInfo.Results.concat(this.Results),!this.Query.Limit||this.Query.Limit>this.OrInfo.Results.length){this.Results=[];var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.orQuerySuccess()}else this.orQuerySuccess()}};var i=u;u.Query=n,u.OnSuccess=o,u.OnError=s,u.SkipRecord=u.Query.Skip,u.LimitRecord=u.Query.Limit;try{u.Transaction=t.DbConnection.transaction([n.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.Transaction.ontimeout=i.onTransactionCompleted,u.ObjectStore=u.Transaction.objectStore(n.From),n.Where?(n.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:n.From})}return u}return __extends(n,r),n}(r.Helper);r.Instance=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=r}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var r,n=this.ObjectStore.openCursor();n.onsuccess=function(t){(r=t.target.result)&&(++e.ResultCount,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var r,n,o=this,s=this.ObjectStore.index(e);if(o.CheckFlag)for(var u=0,i=t.length;u=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},r.executeLikeLogic=function(e,t,r){var n,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&++o.ResultCount,n.continue())}:this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&++o.ResultCount,n.continue())}},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n=this;if(t=r?t[r]:t,n.CheckFlag){(u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r))).onsuccess=function(e){(s=e.target.result)&&(n.checkForWhereConditionMatch(s.value)&&++n.ResultCount,s.continue())},u.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}else if(this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,r));o.onsuccess=function(){n.ResultCount=o.result},o.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}else{var s,u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r));u.onsuccess=function(e){(s=e.target.result)&&(++n.ResultCount,s.continue())},u.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(t){function r(r,n,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=r,s.OnSuccess=n,s.OnError=o;try{var i=function(){u.Transaction=e.DbConnection.transaction([r.From],"readonly"),u.ObjectStore=u.Transaction.objectStore(r.From),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};void 0!=r.Where?r.Where.Or?new e.Select.Instance(r,function(e){u.ResultCount=e.length,u.onTransactionCompleted()},s.OnError):(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}catch(e){s.onExceptionOccured(e,{TableName:r.From})}return s}return __extends(r,t),r}(t.Where);t.Instance=r}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var r in e)if("object"!=typeof e[r])t[r]=e[r];else for(var n in e[r]){switch(n){case"+":t[r]+=e[r][n];break;case"-":t[r]-=e[r][n];break;case"*":t[r]*=e[r][n];break;case"/":t[r]/=e[r][n];break;default:t[r]=e[r]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.executeWhereUndefinedLogic=function(){var e,r=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){(e=n.target.result)&&(e.update(t.updateValue(r.Query.Set,e.value)),++r.RowAffected,e.continue())},n.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}},r}return __extends(r,e),r}(e.BaseUpdate);t.NotWhere=r}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeInLogic=function(t,r){var n,o,s=this,u=this.ObjectStore.index(t);if(s.CheckFlag)for(var i=0,c=r.length;i=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},n.executeLikeLogic=function(e,r,n){var o,s=this;this.CompValue=r.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},s.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&s.checkForWhereConditionMatch(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}:this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}},n}return __extends(n,r),n}(t.In);t.Like=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeWhereLogic=function(t,r,n){var o,s,u=this;r=n?r[n]:r,s=this.ObjectStore.index(t).openCursor(this.getKeyRange(r,n)),u.CheckFlag?s.onsuccess=function(t){(o=t.target.result)&&(u.checkForWhereConditionMatch(o.value)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected),o.continue())}:s.onsuccess=function(t){(o=t.target.result)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected,o.continue())},s.onerror=function(e){u.ErrorOccured=!0,u.onErrorOccured(e)}},r}return __extends(r,t),r}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(e,n,o){var s=r.call(this)||this;s.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},s.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.In],"readwrite"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.In),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},s.executeOrLogic=function(){var e=this;new t.Select.Instance({From:this.Query.In,Where:this.Query.Where},function(t){var r=e.getPrimaryKey(e.Query.In),n=[],o={};t.forEach(function(e){n.push(e[r])}),o[r]={In:n},e.createtransactionForOrLogic({In:e.Query.In,Where:o,Set:e.Query.Set})},this.OnError)};try{if(s.OnSuccess=n,s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e;var u=s,i=function(){u.Transaction=t.DbConnection.transaction([e.In],"readwrite"),u.ObjectStore=u.Transaction.objectStore(e.In),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};e.Where?e.Where.Or?s.executeOrLogic():(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(n,r),n.prototype.checkSchema=function(t,r){if(t){var n=this.getTable(r),o=this;if(n){var s=function(t,r){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,r)};n.Columns.every(function(r){if(o.ErrorOccured)return!1;if(r.Name in t){!function(t){if(r.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:r.Name}),r.DataType){var n=typeof t;if(n!=r.DataType)if("object"!=n)s(e.ErrorType.BadDataType,{ColumnName:r.Name});else{var o=["+","-","*","/"];for(var u in t){o.indexOf(u)<0&&s(e.ErrorType.BadDataType,{ColumnName:r.Name});break}}}}(t[r.Name])}return!0})}else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r});e.throwError(u)}}else this.ErrorOccured=!0,this.OnSuccess(0)},n}(r.Where);r.Instance=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=r}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e,t=this,r=this.ObjectStore.openCursor();r.onsuccess=function(r){(e=r.target.result)&&(e.delete(),++t.RowAffected,e.continue())},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var r,n,o=this;this.ObjectStore.index(e);if(o.CheckFlag)for(var s=0,u=t.length;s=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},r.executeLikeLogic=function(e,t,r){var n,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&(n.delete(),++o.RowAffected),n.continue())}:this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&(n.delete(),++o.RowAffected),n.continue())}},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n,o,s=this;t=r?t[r]:t,o=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r)),s.CheckFlag?o.onsuccess=function(e){(n=e.target.result)&&(s.checkForWhereConditionMatch(n.value)&&(n.delete(),++s.RowAffected),n.continue())}:o.onsuccess=function(e){(n=e.target.result)&&(n.delete(),++s.RowAffected,n.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(n,o,s){var u=r.call(this)||this;u.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},u.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readwrite"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.OrInfo.OnSucess(this.RowAffected)}};try{var i=u;u.Query=n,u.OnSuccess=o,u.OnError=s,u.Transaction=t.DbConnection.transaction([n.From],"readwrite"),u.ObjectStore=u.Transaction.objectStore(n.From),u.Transaction.oncomplete=function(){i.onTransactionCompleted()},u.Transaction.onerror=function(e){i.onErrorOccured(e)},n.Where?(n.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:n.From})}return u}return __extends(n,r),n}(r.Where);r.Instance=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.pushApi=function(e,t){if(!0===t){var r=this;return new Promise(function(t,n){e.OnSuccess=function(e){t(e)},e.OnError=function(e){n(e)},r.prcoessExecutionOfCode(e)})}return this.prcoessExecutionOfCode(e),this},this.prcoessExecutionOfCode=function(t){if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)switch(t.Name){case"create_db":case"open_db":this.RequestQueue.splice(0,0,t),e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode(),e.Status.ConStatus=e.ConnectionStatus.Connected;break;default:this.RequestQueue.push(t)}else this.RequestQueue.push(t),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode();e.EnableLog&&console.log("request pushed: "+t.Name)},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],r={Name:t.Name,Query:t.Query};e.EnableLog&&console.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(r):this.executeCodeDirect(r)}},this.executeCodeDirect=function(t){var r=this;new e.Business.Main(function(e){r.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var r=this.RequestQueue.shift();this.IsCodeExecuting=!1,r&&(e.EnableLog&&console.log("request finished : "+r.Name),t.ErrorOccured?r.OnError&&r.OnError(t.ErrorDetails):r.OnSuccess&&(null!=t.ReturnedValue?r.OnSuccess(t.ReturnedValue):r.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,e.Status.ConStatus==e.ConnectionStatus.NotStarted&&this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},t.executeCodeUsingWorker({Name:"change_log_status",Query:{logging:e.EnableLog}}),setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),e.Status.ConStatus==e.ConnectionStatus.Connected&&t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",r=e?e.toLowerCase():"jsstore",n=document.getElementsByTagName("script"),o=n.length-1,s="";o>=0;o--)if(s=n[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(r)>=0)return t=n[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function r(r){void 0===r&&(r=null);var n=t.call(this)||this;return n.openDb=function(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),this.pushApi({Name:"open_db",Query:e,OnSuccess:t,OnError:r},!1)},n.createDb=function(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),this.pushApi({Name:"create_db",OnSuccess:t,OnError:r,Query:e},!1)},n.dropDb=function(e,t){void 0===t&&(t=null);var r=!e;return this.pushApi({Name:"drop_db",OnSuccess:e,OnError:t},r)},n.select=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,t=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"select",Query:e,OnSuccess:t,OnError:t},n)},n.count=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"count",Query:e,OnSuccess:t,OnError:r},n)},n.insert=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"insert",Query:e,OnSuccess:t,OnError:r},n)},n.update=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"update",Query:e,OnSuccess:t,OnError:r},n)},n.delete=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"delete",Query:e,OnSuccess:t,OnError:r},n)},n.clear=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=!t;return this.prcoessExecutionOfCode({Name:"clear",Query:e,OnSuccess:t,OnError:onerror},n)},n.bulkInsert=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r;var n=!t;return e.OnSuccess=e.OnError=null,this.pushApi({Name:"bulk_insert",Query:e,OnSuccess:t,OnError:r},n)},n.exportJson=function(e){var t=function(t){var r=document.createElement("a");r.href=t,r.download=e.From+".json",r.click(),n&&n()},r=e.OnError,n=e.OnSuccess;e.OnSuccess=e.OnError=void 0;var o=!n;if(o)return new Promise(function(n,s){this.pushApi({Name:"export_json",Query:e,OnSuccess:t,OnError:r},o).then(function(e){t(e),n()}).catch(function(e){s(e)})});this.pushApi({Name:"export_json",Query:e,OnSuccess:t,OnError:r},o)},e.WorkerStatus==e.WebWorkerStatus.Registered?e.WorkerInstance.terminate():e.WorkerStatus==e.WebWorkerStatus.NotStarted&&KeyStore.init(),n.createWorker(),r&&n.openDb(r),n}return __extends(r,t),r}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self&&!self.alert&&(self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name: "+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)},JsStore.WorkerStatus=JsStore.WebWorkerStatus.Registered,KeyStore.init()); \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.7/JsStore-1.2.7.d.ts b/Dist/V 1.2/V 1.2.7/JsStore-1.2.7.d.ts deleted file mode 100644 index f41594da..00000000 --- a/Dist/V 1.2/V 1.2.7/JsStore-1.2.7.d.ts +++ /dev/null @@ -1,1003 +0,0 @@ -/** JsStore.js - v1.2.7 - 14/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - IndexedDbUndefined = "indexeddb_undefined", - IndexedDbBlocked = "indexeddb_blocked", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - UnableToStart = "unable_to_start", - } - enum WhereQryOption { - In = "In", - Like = "Like", - Or = "Or", - } - enum DataType { - String = "string", - Object = "object", - Array = "array", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - GroupBy: any; - Aggregate: { - Max: any; - Min: any; - Count: any; - Sum: any; - Avg: any; - }; - IgnoreCase: boolean; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - IgnoreCase: boolean; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - IgnoreCase: boolean; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - IgnoreCase: boolean; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipDataCheck: any; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - interface IError { - Name: string; - Message: string; - } - interface IAggregate { - Max: Array; - Min: Array; - Sum: Array; - Count: Array; - Avg: Array; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus, TempResults: Array; - var throwError: (error: any) => never; - var getObjectFirstKey: (value: any) => string; -} -declare module JsStore { - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack?: Function) => any; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class BaseHelper { - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - protected getObjectSecondKey: (value: any) => string; - protected getPrimaryKey: (tableName: any) => any; - private getKeyPath; - protected sortNumberInAsc: (values: any) => any; - protected sortNumberInDesc: (values: any) => any; - protected sortAlphabetInAsc: (values: any) => any; - protected sortAlphabetInDesc: (values: any) => any; - private getCombination(word); - protected getAllCombinationOfWord(word: any, isArray: any): any[]; - } - } -} -declare module JsStore { - module Business { - class Base extends BaseHelper { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - SendResultFlag: Boolean; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected goToWhereLogic: () => void; - protected makeQryInCaseSensitive: (qry: any) => any; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - deleteDb: (name: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - class InsertHelper extends Base { - ValuesAffected: any[]; - Query: IInsert; - onTransactionCompleted: () => void; - protected checkModifyInsertValues: (table: any, values: any) => void; - } - } -} -declare module JsStore { - module Business { - class Insert extends InsertHelper { - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class BulkInsert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private bulkinsertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private changeLogStatus; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - bulkInsert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - exportJson: (query: ISelect, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - protected removeDuplicates: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class In extends NotWhere { - private executeSkipAndLimitForIn; - private executeSkipForIn; - private executeLimitForIn; - private executeSimpleForIn; - protected executeInLogic: (column: any, values: any) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class GroupByHelper extends Where { - constructor(); - private executeAggregateGroupBy; - protected processGroupBy: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Helper extends GroupByHelper { - processOrderBy: () => void; - private processAggregateQry; - constructor(); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Helper { - onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private orQuerySuccess; - private executeOrLogic; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - protected onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected pushApi: (request: IWebWorkerRequest, usePromise: boolean) => any; - private prcoessExecutionOfCode; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare var Promise: any; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - openDb: (dbName: string, onSuccess?: Function, onError?: Function) => any; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - createDb: (dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function) => any; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb: (onSuccess: Function, onError?: Function) => any; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select: (query: ISelect, onSuccess?: Function, onError?: Function) => any; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count: (query: ICount, onSuccess?: Function, onError?: Function) => any; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update: (query: IUpdate, onSuccess?: Function, onError?: Function) => any; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete: (query: IDelete, onSuccess?: Function, onError?: Function) => any; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear: (tableName: string, onSuccess?: Function, onError?: Function) => any; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - bulkInsert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - /** - * export the result in json file - * - * @param {ISelect} qry - * @memberof Instance - */ - exportJson: (query: ISelect) => any; - } -} -export = JsStore; \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.7/JsStore-1.2.7.js b/Dist/V 1.2/V 1.2.7/JsStore-1.2.7.js deleted file mode 100644 index e9abad26..00000000 --- a/Dist/V 1.2/V 1.2.7/JsStore-1.2.7.js +++ /dev/null @@ -1,4902 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.2.7 - 14/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var KeyStore; -(function (KeyStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbUndefined - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = /** @class */ (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = /** @class */ (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = /** @class */ (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = /** @class */ (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbBlocked, - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - ErrorType["IndexedDbUndefined"] = "indexeddb_undefined"; - ErrorType["IndexedDbBlocked"] = "indexeddb_blocked"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["UnableToStart"] = "unable_to_start"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); - var WhereQryOption; - (function (WhereQryOption) { - WhereQryOption["In"] = "In"; - WhereQryOption["Like"] = "Like"; - WhereQryOption["Or"] = "Or"; - })(WhereQryOption = JsStore.WhereQryOption || (JsStore.WhereQryOption = {})); - var DataType; - (function (DataType) { - DataType["String"] = "string"; - DataType["Object"] = "object"; - DataType["Array"] = "array"; - })(DataType = JsStore.DataType || (JsStore.DataType = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }, JsStore.TempResults = []; - JsStore.throwError = function (error) { - throw error; - }; - JsStore.getObjectFirstKey = function (value) { - for (var key in value) { - return key; - } - return null; - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (errCallBack === void 0) { errCallBack = null; } - var UsePromise = callback ? false : true; - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { - var DbName; - if (UsePromise) { - return new Promise(function (resolve, reject) { - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - resolve(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - resolve(dbInfo.Table.Version <= dbVersion); - }); - } - }); - } - else { - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - } - else { - var Error = { - Name: JsStore.Status.LastError, - Message: '' - }; - switch (Error.Name) { - case JsStore.ErrorType.IndexedDbBlocked: - Error.Message = "IndexedDB is blocked"; - break; - case JsStore.ErrorType.IndexedDbUndefined: - Error.Message = "IndexedDB is not supported"; - break; - } - if (UsePromise) { - return new Promise(function (resolve, reject) { - reject(Error); - }); - } - else if (errCallBack) { - errCallBack(Error); - } - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = /** @class */ (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = /** @class */ (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = /** @class */ (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var BaseHelper = /** @class */ (function () { - function BaseHelper() { - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - this.getObjectSecondKey = function (value) { - var IsSecond = false; - for (var key in value) { - if (IsSecond) { - return key; - } - else { - IsSecond = true; - } - } - }; - this.getPrimaryKey = function (tableName) { - var PrimaryKey = this.getTable(tableName).PrimaryKey; - return PrimaryKey ? PrimaryKey : this.getKeyPath(); - }; - this.getKeyPath = function (tableName) { - var Transaction = Business.DbConnection.transaction([tableName], "readonly"), ObjectStore = Transaction.objectStore(tableName); - return ObjectStore.keyPath; - }; - this.sortNumberInAsc = function (values) { - values.sort(function (a, b) { - return a - b; - }); - return values; - }; - this.sortNumberInDesc = function (values) { - values.sort(function (a, b) { - return b - a; - }); - return values; - }; - this.sortAlphabetInAsc = function (values) { - values.sort(function (a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); - return values; - }; - this.sortAlphabetInDesc = function (values) { - values.sort(function (a, b) { - return b.toLowerCase().localeCompare(a.toLowerCase()); - }); - return values; - }; - } - BaseHelper.prototype.getCombination = function (word) { - var Results = [], doAndPushCombination = function (word, chars, index) { - if (index == word.length) { - Results.push(chars.join("")); - } - else { - var ch = word.charAt(index); - chars[index] = ch.toLowerCase(); - doAndPushCombination(word, chars, index + 1); - chars[index] = ch.toUpperCase(); - doAndPushCombination(word, chars, index + 1); - } - }; - doAndPushCombination(word, [], 0); - return Results; - }; - BaseHelper.prototype.getAllCombinationOfWord = function (word, isArray) { - if (isArray) { - var Results = []; - for (var i = 0, length = word.length; i < length; i++) { - Results = Results.concat(this.getCombination(word[i])); - } - return Results; - } - else { - return this.getCombination(word); - } - }; - return BaseHelper; - }()); - Business.BaseHelper = BaseHelper; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function (_super) { - __extends(Base, _super); - function Base() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ErrorOccured = false; - _this.ErrorCount = 0; - _this.RowAffected = 0; - _this.SendResultFlag = true; - _this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - if (JsStore.EnableLog) { - console.error(Error); - } - } - } - }; - _this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - _this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - _this.goToWhereLogic = function () { - var Column = JsStore.getObjectFirstKey(this.Query.Where); - if (this.Query.IgnoreCase === true) { - this.Query.Where = this.makeQryInCaseSensitive(this.Query.Where); - } - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1); - var Key = JsStore.getObjectFirstKey(Value); - switch (Key) { - case 'Like': - { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - ; - break; - case 'In': - this.executeInLogic(Column, Value['In']); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - this.executeWhereLogic(Column, Value, Key); - break; - case 'Aggregate': break; - default: this.executeWhereLogic(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1); - this.executeWhereLogic(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - }; - _this.makeQryInCaseSensitive = function (qry) { - var Results = [], Qry; - for (var item in qry) { - Qry = qry[item]; - switch (item) { - case JsStore.WhereQryOption.In: - for (var value in Qry) { - Results = Results.concat(this.getAllCombinationOfWord(Qry['In'], true)); - } - break; - case JsStore.WhereQryOption.Like: break; - default: - Results = Results.concat(this.getAllCombinationOfWord(Qry)); - } - qry[item] = { - In: Results - }; - Results = []; - } - return qry; - }; - return _this; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - switch (CompSymbol) { - case JsStore.Occurence.Any: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - SymbolIndex = value.lastIndexOf(CompValue.toLowerCase()); - if (SymbolIndex < value.length - CompValue.length) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (value <= CompareValue) { - Status = false; - } - ; - break; - //less than - case '<': - if (value >= CompareValue) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - if (typeof ColumnValue == 'object') { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - else { - var CompareValue = rowValue[Column]; - if (ColumnValue != CompareValue) { - Status = false; - break; - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }(Business.BaseHelper)); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = /** @class */ (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = /** @class */ (function () { - function DropDb(name, onSuccess, onError) { - this.deleteDb = function (name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("database is blocked, cant be deleted right now."); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - onSuccess(); - }; - }; - var That = this; - Business.DbConnection.close(); - setTimeout(function () { - That.deleteDb(name, onSuccess, onError); - }, 100); - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var InsertHelper = /** @class */ (function (_super) { - __extends(InsertHelper, _super); - function InsertHelper() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ValuesAffected = []; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.checkModifyInsertValues = function (table, values) { - var That = this, ValueIndex = 0, Value, TableName = table.Name, checkDatas = function () { - Value = values[ValueIndex++]; - checkInternal(); - }, checkInternal = function () { - if (Value) { - checkAndModifyValue(); - } - else { - That.insertData(values); - } - }, checkAndModifyValue = function () { - var Index = 0, checkAndModifyColumn = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(Value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof Value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyColumn(table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - Value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && Value[column.Name] == null) { - Value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - That.onErrorOccured(That.Error, true); - } - } - else { - checkDatas(); - } - }; - checkAndModifyColumn(table.Columns[Index++]); - }; - checkDatas(); - }; - return _this; - } - return InsertHelper; - }(Business.Base)); - Business.InsertHelper = InsertHelper; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = /** @class */ (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.insertData = function (values) { - var That = this, ValueIndex = 0, IsReturn = this.Query.Return, insertDataintoTable; - if (IsReturn) { - insertDataintoTable = function (value) { - if (value) { - var AddResult = ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - That.ValuesAffected.push(value); - insertDataintoTable(values[ValueIndex++]); - }; - } - }; - } - else { - insertDataintoTable = function (value) { - if (value) { - var AddResult = ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - ++That.RowAffected; - insertDataintoTable(values[ValueIndex++]); - }; - } - }; - } - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - var ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(values[ValueIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var Table = _this.getTable(query.Into); - if (Table) { - if (_this.Query.SkipDataCheck) { - _this.insertData(_this.Query.Values); - //remove values - _this.Query.Values = undefined; - } - else { - _this.checkModifyInsertValues(Table, _this.Query.Values); - //remove values - _this.Query.Values = undefined; - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - return Insert; - }(Business.InsertHelper)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var BulkInsert = /** @class */ (function (_super) { - __extends(BulkInsert, _super); - function BulkInsert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.bulkinsertData = function () { - var That = this; - this.Transaction = Business.DbConnection.transaction([this.Query.Into], "readwrite"); - this.ObjectStore = this.Transaction.objectStore(this.Query.Into); - this.Transaction.oncomplete = function (e) { - That.OnSuccess(); - }; - this.Query.Values.forEach(function (value) { - That.ObjectStore.add(value); - }); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - _this.bulkinsertData(); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - return BulkInsert; - }(Business.Base)); - Business.BulkInsert = BulkInsert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = /** @class */ (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = /** @class */ (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value", 0); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (JsStore.EnableLog) { - console.log('checking connection and executing request:' + request.Name); - } - switch (request.Name) { - case 'create_db': - case 'open_db': - this.executeLogic(request); - break; - case 'change_log_status': - this.changeLogStatus(request); - default: - switch (JsStore.Status.ConStatus) { - case JsStore.ConnectionStatus.Connected: - { - this.executeLogic(request); - } - ; - break; - case JsStore.ConnectionStatus.Closed: - { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - ; - break; - } - } - }; - this.changeLogStatus = function (request) { - if (request.Query['logging'] === true) { - JsStore.EnableLog = true; - } - else { - JsStore.EnableLog = false; - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'bulk_insert': - this.bulkInsert(request.Query, OnSuccess, OnError); - break; - case 'export_json': - this.exportJson(request.Query, OnSuccess, OnError); - break; - default: console.error('The Api:-' + request.Name + 'does not support'); - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.bulkInsert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.BulkInsert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.exportJson = function (query, onSuccess, onError) { - this.select(query, function (results) { - var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], { - type: "text/json" - })); - onSuccess(Url); - }, function (err) { - onError(err); - }); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = /** @class */ (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.Sorted = false; - _this.CheckFlag = false; - _this.removeDuplicates = function () { - var Datas = this.Results; - //free results memory - this.Results = undefined; - var Key = this.getPrimaryKey(this.Query.From); - var lookupObject = {}; - for (var i in Datas) { - lookupObject[Datas[i][Key]] = Datas[i]; - } - //free datas memory - Datas = []; - for (i in lookupObject) { - Datas.push(lookupObject[i]); - } - this.Results = Datas; - }; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeSkipAndLimitForIn = function (column, values) { - var Cursor, Skip = this.SkipRecord, That = this, ColumnStore = this.ObjectStore.index(column), skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - skipOrPush(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeSkipForIn = function (column, values) { - var Cursor, Skip = this.SkipRecord, That = this, ColumnStore = this.ObjectStore.index(column), skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - skipOrPush((Cursor.value)); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeLimitForIn = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column); - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeSimpleForIn = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column); - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeInLogic = function (column, values) { - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimitForIn(column, values); - } - else if (this.SkipRecord) { - this.executeSkipForIn(column, values); - } - else if (this.LimitRecord) { - this.executeLimitForIn(column, values); - } - else { - this.executeSimpleForIn(column, values); - } - }; - return _this; - } - return In; - }(Select.NotWhere)); - Select.In = In; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSkip = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLimit = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSimple = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.In)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest, Cursor, executeSkipAndLimit = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeSkip = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeLimit = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }, executeSimple = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = /** @class */ (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var GroupByHelper = /** @class */ (function (_super) { - __extends(GroupByHelper, _super); - function GroupByHelper() { - var _this = _super.call(this) || this; - _this.executeAggregateGroupBy = function () { - var GrpQry = this.Query.GroupBy, Datas = this.Results, LookUpObj = {}; - //free results memory - this.Results = undefined; - //assign aggregate and free aggregate memory - var AggregateQry = this.Query.Aggregate; - this.Query.Aggregate = undefined; - var Index, ObjKey, Value, AggrColumn; - var calculateAggregate = function () { - for (var prop in AggregateQry) { - switch (prop) { - case 'Count': - var getCount = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Count(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? 1 : 0; - return Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Count(" + AggrColumn + ")"] = getCount(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Count(" + AggrColumn + ")"] = getCount(); - } - } - break; - case 'Max': - var getMax = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Max(" + AggrColumn + ")"] : 0; - Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - //compare between old value and new value - return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn]; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Max(" + AggrColumn + ")"] = getMax(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Max(" + AggrColumn + ")"] = getMax(); - } - } - break; - case 'Min': - var getMin = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Min(" + AggrColumn + ")"] : Infinity; - Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity; - //compare between old value and new value - return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn]; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Min(" + AggrColumn + ")"] = getMin(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Min(" + AggrColumn + ")"] = getMin(); - } - } - break; - case 'Sum': - var getSum = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Sum(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - return Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Sum(" + AggrColumn + ")"] = getSum(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Sum(" + AggrColumn + ")"] = getSum(); - } - } - break; - case 'Avg': - var getAvg = function () { - Value = LookUpObj[ObjKey]; - //get old sum value - var Sum = Value ? Value["Sum(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - Datas[Index]["Sum(" + AggrColumn + ")"] = Sum; - //get old count value - Value = Value ? Value["Count(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? 1 : 0; - Datas[Index]["Count(" + AggrColumn + ")"] = Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - getAvg(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - getAvg(); - } - } - break; - } - } - }; - if (typeof GrpQry == 'string') { - for (Index in Datas) { - ObjKey = Datas[Index][GrpQry]; - calculateAggregate(); - LookUpObj[ObjKey] = Datas[Index]; - } - } - else { - for (Index in Datas) { - ObjKey = ""; - for (var column in GrpQry) { - ObjKey += Datas[Index][GrpQry[column]]; - } - calculateAggregate(); - LookUpObj[ObjKey] = Datas[Index]; - } - } - //free datas memory - Datas = []; - for (var i in LookUpObj) { - Datas.push(LookUpObj[i]); - } - //Checking for avg and if exist then fill the datas; - if (AggregateQry.Avg) { - if (typeof AggregateQry.Avg == 'string') { - for (Index in Datas) { - var Sum = Datas[Index]["Sum(" + AggregateQry.Avg + ")"], Count = Datas[Index]["Count(" + AggregateQry.Avg + ")"]; - Datas[Index]["Avg(" + AggregateQry.Avg + ")"] = Sum / Count; - if (AggregateQry.Count !== AggregateQry.Avg) { - delete Datas[Index]["Count(" + AggregateQry.Avg + ")"]; - } - if (AggregateQry.Sum !== AggregateQry.Avg) { - delete Datas[Index]["Sum(" + AggregateQry.Avg + ")"]; - } - } - } - else { - var IsCountTypeString = typeof AggregateQry.Count, IsSumTypeString = typeof AggregateQry.Count; - for (Index in Datas) { - for (var column in AggregateQry.Avg) { - var AvgColumn = AggregateQry.Avg[column], Sum = Datas[Index]["Sum(" + AvgColumn + ")"], Count = Datas[Index]["Count(" + AvgColumn + ")"]; - Datas[Index]["Avg(" + AvgColumn + ")"] = Sum / Count; - if (IsCountTypeString) { - if (AggregateQry.Count !== AvgColumn) { - delete Datas[Index]["Count(" + AvgColumn + ")"]; - } - else if (AggregateQry.Count.indexOf(AvgColumn) == -1) { - delete Datas[Index]["Count(" + AvgColumn + ")"]; - } - } - if (IsSumTypeString) { - if (AggregateQry.Sum !== AvgColumn) { - delete Datas[Index]["Sum(" + AvgColumn + ")"]; - } - else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) { - delete Datas[Index]["Sum(" + AvgColumn + ")"]; - } - } - } - } - } - } - this.Results = Datas; - }; - _this.processGroupBy = function () { - var GrpQry = this.Query.GroupBy, Datas = this.Results, LookUpObj = {}; - //free results memory - this.Results = this.Query.GroupBy = undefined; - if (typeof GrpQry == 'string') { - for (var i in Datas) { - LookUpObj[Datas[i][GrpQry]] = Datas[i]; - } - } - else { - var ObjKey; - for (var i in Datas) { - ObjKey = ""; - for (var column in GrpQry) { - ObjKey += Datas[i][GrpQry[column]]; - } - LookUpObj[ObjKey] = Datas[i]; - } - } - //free datas memory - Datas = []; - for (i in LookUpObj) { - Datas.push(LookUpObj[i]); - } - this.Results = Datas; - }; - return _this; - } - return GroupByHelper; - }(Select.Where)); - Select.GroupByHelper = GroupByHelper; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Helper = /** @class */ (function (_super) { - __extends(Helper, _super); - function Helper() { - var _this = _super.call(this) || this; - _this.processOrderBy = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - } - }; - _this.processAggregateQry = function () { - var Datas = this.Results, Results = {}, Key; - //free results memory - this.Results = undefined; - for (var prop in this.Query.Aggregate) { - switch (prop) { - case 'Count': - var getCount = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key] ? 1 : 0; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Count(" + Key + ")"] = getCount(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Count(" + Key + ")"] = getCount(); - } - } - break; - case 'Max': - var getMax = function () { - var Result = 0; - for (var i in Datas) { - Result = Result > Datas[i][Key] ? Result : Datas[i][Key]; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Max(" + Key + ")"] = getMax(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Max(" + Key + ")"] = getMax(); - } - } - break; - case 'Min': - var getMin = function () { - var Result = Infinity, Value = Infinity; - for (var i in Datas) { - Value = Datas[i][Key] ? Datas[i][Key] : Infinity; - Result = Result < Value ? Result : Value; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Min(" + Key + ")"] = getMin(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Min(" + Key + ")"] = getMin(); - } - } - break; - case 'Sum': - var getSum = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key]; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Sum(" + Key + ")"] = getSum(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Sum(" + Key + ")"] = getSum(); - } - } - break; - case 'Avg': - var getAvg = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key]; - } - ; - return Result / Datas.length; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Avg(" + Key + ")"] = getAvg(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Avg(" + Key + ")"] = getAvg(); - } - } - break; - } - } - //add results to the first index of result - for (var prop in Results) { - Datas[0][prop] = Results[prop]; - } - this.Results = Datas; - }; - return _this; - } - return Helper; - }(Select.GroupByHelper)); - Select.Helper = Helper; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.processOrderBy(); - if (this.Query.GroupBy) { - if (this.Query.Aggregate) { - this.executeAggregateGroupBy(); - } - else { - this.processGroupBy(); - } - } - else if (this.Query.Aggregate) { - this.processAggregateQry(); - } - this.OnSuccess(this.Results); - } - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.orQuerySuccess = function () { - this.Results = this.OrInfo.Results; - //free var memory - this.OrInfo.Results = undefined; - this.removeDuplicates(); - this.OrInfo.OnSucess(this.Results); - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess, - Results: [] - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - this.OrInfo.Results = this.OrInfo.Results.concat(this.Results); - if (!this.Query.Limit || (this.Query.Limit > this.OrInfo.Results.length)) { - this.Results = []; - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.orQuerySuccess(); - } - } - else { - this.orQuerySuccess(); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Helper)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = /** @class */ (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column), CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - if (this.ObjectStore.count) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.count(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - That.ResultCount += e.target.result; - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Count.NotWhere)); - Count.In = In; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Count.In)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (That.CheckFlag) { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - That.ObjectStore = That.Transaction.objectStore(query.From); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where != undefined) { - if (query.Where.Or) { - new Business.Select.Instance(query, function (results) { - That.ResultCount = results.length; - That.onTransactionCompleted(); - }, _this.OnError); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = /** @class */ (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column), CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Update.NotWhere)); - Update.In = In; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Update.In)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.In); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - var That = this; - new Business.Select.Instance({ - From: this.Query.In, - Where: this.Query.Where - }, function (results) { - var Key = That.getPrimaryKey(That.Query.In), InQuery = [], WhereQry = {}; - results.forEach(function (value) { - InQuery.push(value[Key]); - }); - WhereQry[Key] = { In: InQuery }; - That.createtransactionForOrLogic({ - In: That.Query.In, - Where: WhereQry, - Set: That.Query.Set - }); - }, this.OnError); - }; - try { - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - var That = _this; - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(query.In); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - if (suppliedValue) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - } - else { - this.ErrorOccured = true; - //execute onSuccess with supplying 0 as rows affected - this.OnSuccess(0); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = /** @class */ (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column), CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Delete.NotWhere)); - Delete.In = In; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false, Value = value[this.Column].toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (Value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (Value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this, Cursor; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Delete.In)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.OrInfo.OnSucess(this.RowAffected); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = /** @class */ (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.pushApi = function (request, usePromise) { - if (usePromise === true) { - var That = this; - return new Promise(function (resolve, reject) { - request.OnSuccess = function (result) { - resolve(result); - }; - request.OnError = function (error) { - reject(error); - }; - That.prcoessExecutionOfCode(request); - }); - } - else { - this.prcoessExecutionOfCode(request); - return this; - } - }; - this.prcoessExecutionOfCode = function (request) { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - switch (request.Name) { - case 'create_db': - case 'open_db': - this.RequestQueue.splice(0, 0, request); - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - ; - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - break; - default: this.RequestQueue.push(request); - } - } - else { - this.RequestQueue.push(request); - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - } - if (JsStore.EnableLog) { - console.log("request pushed: " + request.Name); - } - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - if (JsStore.EnableLog) { - console.log("request executing : " + FirstRequest.Name); - } - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - if (JsStore.EnableLog) { - console.log("request finished : " + FinishedRequest.Name); - } - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - this.executeCode(); - } - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - That.executeCodeUsingWorker({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - That.executeCode(); - } - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.openDb = function (dbName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - return this.pushApi({ - Name: 'open_db', - Query: dbName, - OnSuccess: onSuccess, - OnError: onError, - }, false); - }; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - return this.pushApi({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }, false); - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - _this.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'select', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'count', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'insert', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'update', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - _this.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'delete', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }, UsePromise); - }; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.bulkInsert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - var UsePromise = onSuccess ? false : true; - query.OnSuccess = query.OnError = null; - return this.pushApi({ - Name: 'bulk_insert', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * export the result in json file - * - * @param {ISelect} qry - * @memberof Instance - */ - _this.exportJson = function (query) { - var OnSuccess = function (url) { - var Link = document.createElement("a"); - Link.href = url; - Link.download = query.From + ".json"; - Link.click(); - if (OnSuccessCallBack) { - OnSuccessCallBack(); - } - }, OnError = query['OnError'], OnSuccessCallBack = query['OnSuccess']; - query['OnSuccess'] = query['OnError'] = undefined; - var UsePromise = OnSuccessCallBack ? false : true; - if (UsePromise) { - return new Promise(function (resolve, reject) { - this.pushApi({ - Name: 'export_json', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }, UsePromise).then(function (url) { - OnSuccess(url); - resolve(); - }).catch(function (err) { - reject(err); - }); - }); - } - else { - this.pushApi({ - Name: 'export_json', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }, UsePromise); - } - }; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - JsStore.WorkerInstance.terminate(); - } - else if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - KeyStore.init(); - } - _this.createWorker(); - if (dbName) { - _this.openDb(dbName); - } - return _this; - } - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -if (self && !self.alert) { - self.onmessage = function (e) { - if (JsStore.EnableLog) { - console.log("Request executing from WebWorker, request name: " + e.data.Name); - } - var Request = e.data, IndexDbObject = new JsStore.Business.Main(); - IndexDbObject.checkConnectionAndExecuteLogic(Request); - }; - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - KeyStore.init(); -} -//# sourceMappingURL=JsStore-1.2.7.js.map \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.7/JsStore-1.2.7.js.map b/Dist/V 1.2/V 1.2.7/JsStore-1.2.7.js.map deleted file mode 100644 index 2b0aacb6..00000000 --- a/Dist/V 1.2/V 1.2.7/JsStore-1.2.7.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.2.7.js","sourceRoot":"","sources":["../License.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../JsStore/enums.ts","../JsStore/interfaces.ts","../JsStore/CommonLogic.ts","../JsStore/UtilsLogic.ts","../JsStore/HelperLogic.ts","../JsStore/Model/Column.ts","../JsStore/Model/Table.ts","../JsStore/Model/DataBase.ts","../JsStore/Business/BaseHelperLogic.ts","../JsStore/Business/BaseLogic.ts","../JsStore/Business/CreateDbLogic.ts","../JsStore/Business/DropDbLogic.ts","../JsStore/Business/InsertHelperLogic.ts","../JsStore/Business/InsertLogic.ts","../JsStore/Business/BulkInsertLogic.ts","../JsStore/Business/OpenDbLogic.ts","../JsStore/Business/ClearLogic.ts","../JsStore/Business/MainLogic.ts","../JsStore/Business/Select/BaseSelectLogic.ts","../JsStore/Business/Select/NotWhereLogic.ts","../JsStore/Business/Select/InLogic.ts","../JsStore/Business/Select/LikeLogic.ts","../JsStore/Business/Select/WhereLogic.ts","../JsStore/Business/Select/JoinLogic.ts","../JsStore/Business/Select/GroupByHelperLogic.ts","../JsStore/Business/Select/HelperLogic.ts","../JsStore/Business/Select/InstanceLogic.ts","../JsStore/Business/Count/BaseCountLogic.ts","../JsStore/Business/Count/NotWhereLogic.ts","../JsStore/Business/Count/InLogic.ts","../JsStore/Business/Count/LikeLogic.ts","../JsStore/Business/Count/WhereLogic.ts","../JsStore/Business/Count/InstanceLogic.ts","../JsStore/Business/Update/BaseUpdateLogic.ts","../JsStore/Business/Update/NotWhereLogic.ts","../JsStore/Business/Update/InLogic.ts","../JsStore/Business/Update/LikeLogic.ts","../JsStore/Business/Update/WhereLogic.ts","../JsStore/Business/Update/InstanceLogic.ts","../JsStore/Business/Delete/BaseDeleteLogic.ts","../JsStore/Business/Delete/NotWhereLogic.ts","../JsStore/Business/Delete/InLogic.ts","../JsStore/Business/Delete/LikeLogic.ts","../JsStore/Business/Delete/WhereLogic.ts","../JsStore/Business/Delete/InstanceLogic.ts","../JsStore/CodeExecutionHelper.ts","../JsStore/JsStoreInstance.ts","../JsStore/DirectCode.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.2.7 - 14/11/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n\r\n export enum WhereQryOption {\r\n In = \"In\",\r\n Like = \"Like\",\r\n Or = \"Or\"\r\n }\r\n\r\n export enum DataType {\r\n String = \"string\",\r\n Object = \"object\",\r\n Array = \"array\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder,\r\n GroupBy: any,\r\n Aggregate: {\r\n Max: any,\r\n Min: any,\r\n Count: any,\r\n Sum: any,\r\n Avg: any\r\n },\r\n IgnoreCase: boolean\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n IgnoreCase: boolean,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipDataCheck\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n\r\n export interface IAggregate {\r\n Max: Array,\r\n Min: Array,\r\n Sum: Array,\r\n Count: Array,\r\n Avg: Array\r\n }\r\n\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n}","module JsStore {\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function = null) {\r\n var UsePromise = callback ? false : true;\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n resolve(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n resolve(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n })\r\n }\r\n else {\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n reject(Error);\r\n });\r\n }\r\n else if (errCallBack) {\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BaseHelper {\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n\r\n protected sortNumberInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a - b;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortNumberInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b - a;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b.toLowerCase().localeCompare(a.toLowerCase());\r\n });\r\n return values;\r\n };\r\n\r\n private getCombination(word: string) {\r\n var Results = [],\r\n doAndPushCombination = function (word: string, chars, index: number) {\r\n if (index == word.length) {\r\n Results.push(chars.join(\"\"));\r\n } else {\r\n var ch = word.charAt(index);\r\n chars[index] = ch.toLowerCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n chars[index] = ch.toUpperCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n }\r\n };\r\n doAndPushCombination(word, [], 0);\r\n return Results;\r\n }\r\n\r\n protected getAllCombinationOfWord(word, isArray) {\r\n if (isArray) {\r\n var Results = [];\r\n for (var i = 0, length = word.length; i < length; i++) {\r\n Results = Results.concat(this.getCombination(word[i]))\r\n }\r\n return Results;\r\n }\r\n else {\r\n return this.getCombination(word);\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base extends BaseHelper {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n if (EnableLog) {\r\n console.error(Error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.Query.IgnoreCase === true) {\r\n this.Query.Where = this.makeQryInCaseSensitive(this.Query.Where);\r\n }\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In':\r\n this.executeInLogic(Column, Value['In']);\r\n break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n case 'Aggregate': break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected makeQryInCaseSensitive = function (qry) {\r\n var Results = [],\r\n Qry;\r\n for (var item in qry) {\r\n Qry = qry[item];\r\n switch (item) {\r\n case WhereQryOption.In:\r\n for (var value in Qry) {\r\n Results = Results.concat(this.getAllCombinationOfWord(Qry['In'], true));\r\n }\r\n break;\r\n case WhereQryOption.Like: break;\r\n default:\r\n Results = Results.concat(this.getAllCombinationOfWord(Qry));\r\n }\r\n qry[item] = {\r\n In: Results\r\n }\r\n Results = [];\r\n }\r\n return qry;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n DbConnection.close();\r\n setTimeout(function () {\r\n That.deleteDb(name, onSuccess, onError);\r\n }, 100);\r\n }\r\n\r\n deleteDb = function (name: string, onSuccess: Function, onError: Function) {\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"database is blocked, cant be deleted right now.\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n onSuccess();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class InsertHelper extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n protected checkModifyInsertValues = function (table, values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n Value,\r\n TableName = table.Name,\r\n checkDatas = function () {\r\n Value = values[ValueIndex++];\r\n checkInternal();\r\n },\r\n checkInternal = function () {\r\n if (Value) {\r\n checkAndModifyValue();\r\n }\r\n else {\r\n That.insertData(values);\r\n }\r\n },\r\n checkAndModifyValue = function () {\r\n var Index = 0,\r\n checkAndModifyColumn = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(Value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof Value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n Value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && Value[column.Name] == null) { //check Default Schema\r\n Value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n }\r\n else {\r\n checkDatas();\r\n }\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n }\r\n checkDatas();\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends InsertHelper {\r\n private insertData = function (values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable: Function;\r\n if (IsReturn) {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n That.ValuesAffected.push(value);\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n ++That.RowAffected;\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n }\r\n }\r\n }\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n var ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var Table = this.getTable(query.Into);\r\n if (Table) {\r\n if (this.Query.SkipDataCheck) {\r\n this.insertData(this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n else {\r\n this.checkModifyInsertValues(Table, this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BulkInsert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private bulkinsertData = function () {\r\n var That = this;\r\n this.Transaction = DbConnection.transaction([this.Query.Into], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(this.Query.Into);\r\n this.Transaction.oncomplete = function (e) {\r\n That.OnSuccess();\r\n }\r\n this.Query.Values.forEach(function (value) {\r\n That.ObjectStore.add(value);\r\n });\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.bulkinsertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (EnableLog) {\r\n console.log('checking connection and executing request:' + request.Name);\r\n }\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.executeLogic(request);\r\n break;\r\n case 'change_log_status':\r\n this.changeLogStatus(request);\r\n default:\r\n switch (Status.ConStatus) {\r\n case ConnectionStatus.Connected: {\r\n this.executeLogic(request);\r\n }; break;\r\n case ConnectionStatus.Closed: {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }; break;\r\n }\r\n }\r\n }\r\n\r\n private changeLogStatus = function (request) {\r\n if (request.Query['logging'] === true) {\r\n EnableLog = true;\r\n }\r\n else {\r\n EnableLog = false;\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'bulk_insert': this.bulkInsert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'export_json': this.exportJson(request.Query, OnSuccess, OnError);\r\n break;\r\n default: console.error('The Api:-' + request.Name + 'does not support');\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public bulkInsert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new BulkInsert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n\r\n public exportJson = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n this.select(query, function (results) {\r\n var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], {\r\n type: \"text/json\"\r\n }));\r\n onSuccess(Url);\r\n }, function (err) {\r\n onError(err);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class In extends NotWhere {\r\n\r\n private executeSkipAndLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n skipOrPush(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkipForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n skipOrPush((Cursor.value));\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeSimpleForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n protected executeInLogic = function (column, values) {\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimitForIn(column, values);\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkipForIn(column, values);\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimitForIn(column, values);\r\n }\r\n else {\r\n this.executeSimpleForIn(column, values);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class GroupByHelper extends Where {\r\n constructor() {\r\n super();\r\n }\r\n\r\n private executeAggregateGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = undefined;\r\n //assign aggregate and free aggregate memory\r\n var AggregateQry = this.Query.Aggregate;\r\n this.Query.Aggregate = undefined;\r\n var Index, ObjKey, Value, AggrColumn;\r\n var calculateAggregate = function () {\r\n for (var prop in AggregateQry) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Max(\" + AggrColumn + \")\"] : 0;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n //compare between old value and new value\r\n return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Min(\" + AggrColumn + \")\"] : Infinity;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity;\r\n //compare between old value and new value\r\n return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old sum value\r\n var Sum = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = Sum;\r\n //get old count value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = Value;\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n getAvg();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (typeof GrpQry == 'string') {\r\n for (Index in Datas) {\r\n ObjKey = Datas[Index][GrpQry];\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n }\r\n else {\r\n for (Index in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[Index][GrpQry[column]];\r\n }\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (var i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n //Checking for avg and if exist then fill the datas;\r\n if (AggregateQry.Avg) {\r\n if (typeof AggregateQry.Avg == 'string') {\r\n for (Index in Datas) {\r\n var Sum = Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"],\r\n Count = Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n Datas[Index][\"Avg(\" + AggregateQry.Avg + \")\"] = Sum / Count;\r\n if (AggregateQry.Count !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n }\r\n if (AggregateQry.Sum !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"];\r\n }\r\n }\r\n }\r\n else {\r\n var IsCountTypeString = typeof AggregateQry.Count,\r\n IsSumTypeString = typeof AggregateQry.Count;\r\n for (Index in Datas) {\r\n for (var column in AggregateQry.Avg) {\r\n var AvgColumn = AggregateQry.Avg[column],\r\n Sum = Datas[Index][\"Sum(\" + AvgColumn + \")\"],\r\n Count = Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n Datas[Index][\"Avg(\" + AvgColumn + \")\"] = Sum / Count;\r\n\r\n if (IsCountTypeString) {\r\n if (AggregateQry.Count !== AvgColumn) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Count.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n\r\n if (IsSumTypeString) {\r\n if (AggregateQry.Sum !== AvgColumn) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.Results = Datas;\r\n };\r\n\r\n protected processGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = this.Query.GroupBy = undefined;\r\n if (typeof GrpQry == 'string') {\r\n for (var i in Datas) {\r\n LookUpObj[Datas[i][GrpQry]] = Datas[i];\r\n }\r\n }\r\n else {\r\n var ObjKey;\r\n for (var i in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[i][GrpQry[column]];\r\n }\r\n LookUpObj[ObjKey] = Datas[i];\r\n }\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Helper extends GroupByHelper {\r\n processOrderBy = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private processAggregateQry = function () {\r\n var Datas = this.Results,\r\n Results = {},\r\n Key;\r\n //free results memory\r\n this.Results = undefined;\r\n for (var prop in this.Query.Aggregate) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key] ? 1 : 0;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result = Result > Datas[i][Key] ? Result : Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n var Result = Infinity, Value = Infinity;\r\n for (var i in Datas) {\r\n Value = Datas[i][Key] ? Datas[i][Key] : Infinity;\r\n Result = Result < Value ? Result : Value;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result / Datas.length;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n //add results to the first index of result\r\n for (var prop in Results) {\r\n Datas[0][prop] = Results[prop];\r\n }\r\n this.Results = Datas;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Helper {\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.processOrderBy();\r\n if (this.Query.GroupBy) {\r\n if (this.Query.Aggregate) {\r\n this.executeAggregateGroupBy();\r\n }\r\n else {\r\n this.processGroupBy();\r\n }\r\n }\r\n else if (this.Query.Aggregate) {\r\n this.processAggregateQry();\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.count(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n That.ResultCount += (e).target.result;\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (That.CheckFlag) {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n protected onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false,\r\n Value = value[this.Column].toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (Value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (Value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (Value.lastIndexOf(this.CompValue) == Value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this,\r\n Cursor: IDBCursorWithValue;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected pushApi = function (request: IWebWorkerRequest, usePromise: boolean) {\r\n if (usePromise === true) {\r\n var That = this;\r\n return new Promise(function (resolve, reject) {\r\n request.OnSuccess = function (result) {\r\n resolve(result);\r\n };\r\n request.OnError = function (error) {\r\n reject(error);\r\n };\r\n That.prcoessExecutionOfCode(request);\r\n });\r\n }\r\n else {\r\n this.prcoessExecutionOfCode(request);\r\n return this;\r\n }\r\n }\r\n\r\n private prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.RequestQueue.splice(0, 0, request);\r\n if (WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n };\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n break;\r\n default: this.RequestQueue.push(request);\r\n }\r\n }\r\n else {\r\n this.RequestQueue.push(request);\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n if (EnableLog) {\r\n console.log(\"request pushed: \" + request.Name);\r\n }\r\n\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n if (EnableLog) {\r\n console.log(\"request executing : \" + FirstRequest.Name)\r\n }\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n if (EnableLog) {\r\n console.log(\"request finished : \" + FinishedRequest.Name);\r\n }\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n protected createWorker = function () {\r\n var That: CodeExecutionHelper = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n That.executeCodeUsingWorker({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n That.executeCode();\r\n }\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\ndeclare var Promise: any;\r\n\r\nmodule JsStore {\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n WorkerInstance.terminate();\r\n }\r\n else if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n KeyStore.init();\r\n }\r\n this.createWorker();\r\n if (dbName) {\r\n this.openDb(dbName);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * open database\r\n * \r\n * @param {string} dbName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n openDb = function (dbName: string, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'open_db',\r\n Query: dbName,\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n }, false);\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {Model.IDataBase} dataBase \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n createDb = function (dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n }, false);\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb = function (onSuccess: Function, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select = function (query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count = function (query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update = function (query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete = function (query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear = function (tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * insert bulk amount of data\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n bulkInsert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n var UsePromise = onSuccess ? false : true;\r\n query.OnSuccess = query.OnError = null;\r\n return this.pushApi({\r\n Name: 'bulk_insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * export the result in json file\r\n * \r\n * @param {ISelect} qry \r\n * @memberof Instance\r\n */\r\n exportJson = function (query: ISelect) {\r\n var OnSuccess = function (url) {\r\n var Link = document.createElement(\"a\");\r\n Link.href = url;\r\n Link.download = query.From + \".json\";\r\n Link.click();\r\n if (OnSuccessCallBack) {\r\n OnSuccessCallBack();\r\n }\r\n },\r\n OnError = query['OnError'],\r\n OnSuccessCallBack = query['OnSuccess'];\r\n query['OnSuccess'] = query['OnError'] = undefined;\r\n var UsePromise = OnSuccessCallBack ? false : true;\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise).then(function (url) {\r\n OnSuccess(url);\r\n resolve();\r\n }).catch(function (err) {\r\n reject(err);\r\n });\r\n });\r\n }\r\n else {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","if (self && !self.alert) {\r\n self.onmessage = function (e) {\r\n if (JsStore.EnableLog) {\r\n console.log(\"Request executing from WebWorker, request name: \" + e.data.Name);\r\n }\r\n var Request = e.data,\r\n IndexDbObject = new JsStore.Business.Main();\r\n IndexDbObject.checkConnectionAndExecuteLogic(Request);\r\n };\r\n JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered;\r\n KeyStore.init();\r\n}\r\n\r\n"]} \ No newline at end of file diff --git a/Dist/V 1.2/V 1.2.7/JsStore-1.2.7.min.js b/Dist/V 1.2/V 1.2.7/JsStore-1.2.7.min.js deleted file mode 100644 index e002d882..00000000 --- a/Dist/V 1.2/V 1.2.7/JsStore-1.2.7.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.2.7 - 14/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var r=this;new e.Business.Main(function(e){r.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var r=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?r.OnError?r.OnError(t.ErrorDetails):console.log(t.ErrorDetails):r.OnSuccess&&(null!=t.ReturnedValue?r.OnSuccess(t.ReturnedValue):r.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,r){var n=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(r));n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},n.onsuccess=function(t){var r=t.target.result;r&&(e.Results=r.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([r.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(r.From),s.Transaction.oncomplete=function(e){null!=n&&n(u.Results)},s.get(),s}return __extends(r,t),r}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.setData=function(e){var t=this,r=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var n=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));n.onsuccess=function(t){var n=t.target.result;n?(n.value.Value=e.Value,n.update(n.value)):r()},n.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([r.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(r.TableName),s.Transaction.oncomplete=function(e){null!=n&&n()},s.setData(r.Set)}catch(e){console.error(e)}return s}return __extends(r,t),r}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,r){var n=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(r));n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},n.onsuccess=function(t){var r=t.target.result;r&&(r.delete(),++e.RowAffected,r.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([r.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(r.From),s.Transaction.oncomplete=function(){null!=n&&n(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(r,t),r}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var r=function(){return function(r,n,o,s){var u=self.indexedDB.open(r,1);u.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},u.onsuccess=function(r){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(r){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(n,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=r}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var r=function(){return function(r){void 0===r&&(r=null),this.checkConnectionAndExecuteLogic=function(r){if("create_db"==r.Name||"open_db"==r.Name)this.executeLogic(r);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(r);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)n=this,setTimeout(function(){n.checkConnectionAndExecuteLogic(r)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var n=this;this.createDb(e.TableName,function(){n.checkConnectionAndExecuteLogic(r)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,r=function(e){t.returnResult({ReturnedValue:e})},n=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,r,n);break;case"set":this.set(e.Query,r,n);break;case"remove":this.remove(e.Query,r,n);break;case"create_db":this.createDb(e.Query,r,n)}},this.set=function(e,r,n){new t.Set(e,r,n)},this.remove=function(e,r,n){new t.Remove(e,r,n)},this.get=function(e,r,n){new t.Get(e,r,n)},this.createDb=function(e,r,n){new t.InitDb("KeyStore",e,r,n)},this.OnSuccess=r}}();t.Main=r}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,r,n){void 0===n&&(n=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:r,OnError:n}),this},e.set=function(t,r,n,o){void 0===n&&(n=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:r}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:n,OnError:o}),this},e.remove=function(t,r,n){void 0===r&&(r=null),void 0===n&&(n=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:r,OnError:n}),this}}(KeyStore||(KeyStore={}));var JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.In="In",e.Like="Like",e.Or="Or"}(e.WhereQryOption||(e.WhereQryOption={}));!function(e){e.String="string",e.Object="object",e.Array="array"}(e.DataType||(e.DataType={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.TempResults=[],e.throwError=function(e){throw e},e.getObjectFirstKey=function(e){for(var t in e)return t;return null}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,r){var n={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:n.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:n.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:n.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:n.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:n.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:n.Message="No value supplied";break;case e.ErrorType.InvalidOp:n.Message="Invalid Op Value '"+r.Op+"'";break;case e.ErrorType.ColumnNotExist:n.Message="Column '"+r.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:n.Message="Null value is not allowed for column '"+r.ColumnName+"'";break;case e.ErrorType.BadDataType:n.Message="Supplied value for column '"+r.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:n.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:n.Message="Table '"+r.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:n.Message="Database '"+r.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return n},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),r=t.length;r--;){var n=t[r];e[n.toLowerCase()]=e[n],delete e[n]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,r,n){void 0===n&&(n=null);var o=!r;if(e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){if(o)return new Promise(function(r,n){"string"==typeof t?e.getDbVersion(t,function(e){r(Boolean(e))}):e.getDbVersion(t.DbName,function(e){r(t.Table.Version<=e)})});"string"==typeof t?e.getDbVersion(t,function(e){r(Boolean(e))}):e.getDbVersion(t.DbName,function(e){r(t.Table.Version<=e)})}else{var s={Name:e.Status.LastError,Message:""};switch(s.Name){case e.ErrorType.IndexedDbBlocked:s.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:s.Message="IndexedDB is not supported"}if(o)return new Promise(function(e,t){t(s)});n&&n(s)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})},e.disableLog=function(){e.EnableLog=!1,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(t,r){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+r),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=r}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){function r(e,r){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var n=this;e.Columns.forEach(function(r){n.Columns.push(new t.Column(r,e.Name))}),this.setRequireDelete(r),this.setDbVersion(r),this.setPrimaryKey(r)}return r.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},r.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:er.Version?e.DbVersion:r.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+r.Name+"_Version",e.DbVersion),r.Version=e.DbVersion},r}();t.Table=r}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var r=this;this.Name=t.Name,t.Tables.forEach(function(t){r.Tables.push(new e.Table(t,r.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){function t(){this.getTable=function(t){var r;return e.ActiveDataBase.Tables.every(function(e){return e.Name!=t||(r=e,!1)}),r},this.getKeyRange=function(e,t){var r;switch(t){case"-":r=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":r=IDBKeyRange.lowerBound(e,!0);break;case">=":r=IDBKeyRange.lowerBound(e);break;case"<":r=IDBKeyRange.upperBound(e,!0);break;case"<=":r=IDBKeyRange.upperBound(e);break;default:r=IDBKeyRange.only(e)}return r},this.getObjectSecondKey=function(e){var t=!1;for(var r in e){if(t)return r;t=!0}},this.getPrimaryKey=function(e){var t=this.getTable(e).PrimaryKey;return t||this.getKeyPath()},this.getKeyPath=function(t){return e.DbConnection.transaction([t],"readonly").objectStore(t).keyPath},this.sortNumberInAsc=function(e){return e.sort(function(e,t){return e-t}),e},this.sortNumberInDesc=function(e){return e.sort(function(e,t){return t-e}),e},this.sortAlphabetInAsc=function(e){return e.sort(function(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}),e},this.sortAlphabetInDesc=function(e){return e.sort(function(e,t){return t.toLowerCase().localeCompare(e.toLowerCase())}),e}}return t.prototype.getCombination=function(e){var t=[],r=function(e,n,o){if(o==e.length)t.push(n.join(""));else{var s=e.charAt(o);n[o]=s.toLowerCase(),r(e,n,o+1),n[o]=s.toUpperCase(),r(e,n,o+1)}};return r(e,[],0),t},t.prototype.getAllCombinationOfWord=function(e,t){if(t){for(var r=[],n=0,o=e.length;n1||Object.keys(this.Query.Where).length>1);var n=e.getObjectFirstKey(r);switch(n){case"Like":var o=r.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":this.executeInLogic(t,r.In);break;case"-":case">":case"<":case">=":case"<=":this.executeWhereLogic(t,r,n);break;case"Aggregate":break;default:this.executeWhereLogic(t,r)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,r)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)},r.makeQryInCaseSensitive=function(t){var r,n=[];for(var o in t){switch(r=t[o],o){case e.WhereQryOption.In:for(var s in r)n=n.concat(this.getAllCombinationOfWord(r.In,!0));break;case e.WhereQryOption.Like:break;default:n=n.concat(this.getAllCombinationOfWord(r))}t[o]={In:n},n=[]}return t},r}return __extends(r,t),r.prototype.checkForWhereConditionMatch=function(t){var r=this.Query.Where,n=!0;for(var o in r){var s=r[o];if(!n)break;if("object"==typeof s)for(var u in s){if(!n)break;switch(u){case"In":!function(e,t){for(var o=r[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(i=o.indexOf(u.toLowerCase()))<0&&(n=!1);break;case e.Occurence.First:((i=o.indexOf(u.toLowerCase()))>0||i<0)&&(n=!1);break;default:(i=o.lastIndexOf(u.toLowerCase()))":case"<":case">=":case"<=":!function(e,t,o){var s=r[e][o];switch(o){case">":t<=s&&(n=!1);break;case"<":t>=s&&(n=!1);break;case"<=":t>s&&(n=!1);break;case">=":ts.High)&&(n=!1)}}(o,t[o],u)}}else if(s!=t[o]){n=!1;break}}return n},r}(t.BaseHelper);t.Base=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){var s=[],u=indexedDB.open(t.ActiveDataBase.Name,r);u.onerror=function(e){null!=o&&o(e.target.error)},u.onsuccess=function(r){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=n&&n(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},u.onupgradeneeded=function(e){var r=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(r.objectStoreNames.contains(e.Name)&&r.deleteObjectStore(e.Name),i(r,e)):e.RequireCreation&&i(r,e)})};var i=function(e,r){try{if(r.PrimaryKey.length>0)n=e.createObjectStore(r.Name,{keyPath:r.PrimaryKey}),r.Columns.forEach(function(e){e.PrimaryKey?n.createIndex(e.Name,e.Name,{unique:!0}):n.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_"+e.Name+"_Value",0)});else{var n=e.createObjectStore(r.Name,{autoIncrement:!0});r.Columns.forEach(function(e){n.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_"+e.Name+"_Value",0)})}s.push(r.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_Version",r.Version)}catch(e){console.error(e)}}}}();t.CreateDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){this.deleteDb=function(r,n,o){var s=indexedDB.deleteDatabase(r);s.onblocked=function(){null!=o&&o("database is blocked, cant be deleted right now.")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(r){r.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+r.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),n()}};var s=this;t.DbConnection.close(),setTimeout(function(){s.deleteDb(r,n,o)},100)}}();t.DropDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(){var n=null!==r&&r.apply(this,arguments)||this;return n.ValuesAffected=[],n.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},n.checkModifyInsertValues=function(r,n){var o,s=this,u=0,i=r.Name,c=function(){o=n[u++],a()},a=function(){o?l():s.insertData(n)},l=function(){var n=0,u=function(a){if(a){var l=function(t,r){s.ErrorOccured=!0,s.Error=e.Utils.getError(t,r)},h=function(){a.NotNull&&e.isNull(o[a.Name])?l(e.ErrorType.NullValue,{ColumnName:a.Name}):a.DataType&&typeof o[a.Name]!=a.DataType&&l(e.ErrorType.BadDataType,{ColumnName:a.Name}),u(r.Columns[n++])};s.ErrorOccured?s.onErrorOccured(s.Error,!0):a.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",function(e){o[a.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",e),h()}):a.Default&&null==o[a.Name]?(o[a.Name]=a.Default,h()):h()}else c()};u(r.Columns[n++])};c()},n}return __extends(n,r),n}(t.Base);t.InsertHelper=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(n,o,s){var u=r.call(this)||this;u.insertData=function(e){var r,n=this,o=0,s=this.Query.Return;r=s?function(t){if(t){var s=u.add(t);s.onerror=function(e){n.onErrorOccured(e)},s.onsuccess=function(s){n.ValuesAffected.push(t),r(e[o++])}}}:function(t){if(t){var s=u.add(t);s.onerror=function(e){n.onErrorOccured(e)},s.onsuccess=function(t){++n.RowAffected,r(e[o++])}}},n.Transaction=t.DbConnection.transaction([n.Query.Into],"readwrite");var u=n.Transaction.objectStore(n.Query.Into);n.Transaction.oncomplete=function(e){n.onTransactionCompleted()},r(e[o++])};try{u.Query=n,u.OnSuccess=o,u.OnError=s;var i=u.getTable(n.Into);if(i)u.Query.SkipDataCheck?(u.insertData(u.Query.Values),u.Query.Values=void 0):(u.checkModifyInsertValues(i,u.Query.Values),u.Query.Values=void 0);else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:n.Into})}return u}return __extends(n,r),n}(t.InsertHelper);t.Insert=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(n,o,s){var u=r.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.bulkinsertData=function(){var e=this;this.Transaction=t.DbConnection.transaction([this.Query.Into],"readwrite"),this.ObjectStore=this.Transaction.objectStore(this.Query.Into),this.Transaction.oncomplete=function(t){e.OnSuccess()},this.Query.Values.forEach(function(t){e.ObjectStore.add(t)})};try{u.Query=n,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(n.Into),u.Table)u.bulkinsertData();else{var i=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n.Into});e.throwError(i)}}catch(e){u.onExceptionOccured(e,{TableName:n.Into})}return u}return __extends(n,r),n}(t.Base);t.BulkInsert=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,r);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(r){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=n&&n()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([r],"readwrite").objectStore(r).clear();return i.onsuccess=function(t){u.getTable(r).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.set("JsStore_"+e.ActiveDataBase.Name+"_"+r+"_"+t.Name+"_Value",0)}),null!=n&&n()},i.onerror=function(e){null!=o&&o()},s}return __extends(r,t),r}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r){void 0===r&&(r=null),this.checkConnectionAndExecuteLogic=function(r){switch(e.EnableLog&&console.log("checking connection and executing request:"+r.Name),r.Name){case"create_db":case"open_db":this.executeLogic(r);break;case"change_log_status":this.changeLogStatus(r);default:switch(e.Status.ConStatus){case e.ConnectionStatus.Connected:this.executeLogic(r);break;case e.ConnectionStatus.Closed:var n=this;this.openDb(t.ActiveDataBase.Name,function(){n.checkConnectionAndExecuteLogic(r)})}}},this.changeLogStatus=function(t){!0===t.Query.logging?e.EnableLog=!0:e.EnableLog=!1},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,r=function(e){t.returnResult({ReturnedValue:e})},n=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,r,n);break;case"insert":this.insert(e.Query,r,n);break;case"update":this.update(e.Query,r,n);break;case"delete":this.delete(e.Query,r,n);break;case"open_db":this.openDb(e.Query,r,n);break;case"create_db":this.createDb(e.Query,r,n);break;case"clear":this.clear(e.Query,r,n);break;case"drop_db":this.dropDb(r,n);break;case"count":this.count(e.Query,r,n);break;case"bulk_insert":this.bulkInsert(e.Query,r,n);break;case"export_json":this.exportJson(e.Query,r,n);break;default:console.error("The Api:-"+e.Name+"does not support")}},this.openDb=function(r,n,o){KeyStore.get("JsStore_"+r+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:r});KeyStore.get("JsStore_"+r+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,n,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,r){new t.DropDb(t.ActiveDataBase.Name,e,r)},this.update=function(e,r,n){new t.Update.Instance(e,r,n)},this.insert=function(r,n,o){Array.isArray(r.Values)?new t.Insert(r,n,o):e.throwError("Value should be array :- supplied value is not array")},this.bulkInsert=function(r,n,o){Array.isArray(r.Values)?new t.BulkInsert(r,n,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,r,n){new t.Delete.Instance(e,r,n)},this.select=function(e,r,n){"object"==typeof e.From?new t.Select.Join(e,r,n):new t.Select.Instance(e,r,n)},this.count=function(e,r,n){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,r,n)):new t.Count.Instance(e,r,n)},this.createDb=function(r,n,o){KeyStore.get("JsStore_"+r.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(r);var u=function(){setTimeout(function(){var r=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_Version",function(s){s==r.Version?new t.CreateDb(e.DbVersion,n,o):u()})},200)};u()})},this.clear=function(e,r,n){new t.Clear(e,r,n)},this.exportJson=function(e,t,r){this.select(e,function(e){var r=URL.createObjectURL(new Blob([JSON.stringify(e)],{type:"text/json"}));t(r)},function(e){r(e)})},this.OnSuccess=r}}();t.Main=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.Sorted=!1,t.CheckFlag=!1,t.removeDuplicates=function(){var e=this.Results;this.Results=void 0;var t=this.getPrimaryKey(this.Query.From),r={};for(var n in e)r[e[n][t]]=e[n];e=[];for(n in r)e.push(r[n]);this.Results=e},t}return __extends(t,e),t}(e.Base);t.BaseSelect=r}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var r=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeWhereUndefinedLogic=function(){var t,r,n=this;if(this.Query.Order&&this.Query.Order.By)if(n.ObjectStore.indexNames.contains(this.Query.Order.By)){var o=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,r=this.ObjectStore.index(n.Query.Order.By).openCursor(null,o)}else{var s=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(s)}else r=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(r){(t=r.target.result)&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(t.value),t.continue()):(e=!0,t.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(r){(t=r.target.result)&&(e?(n.Results.push(t.value),t.continue()):(e=!0,t.advance(n.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){(t=e.target.result)&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:r.onsuccess=function(e){(t=e.target.result)&&(n.Results.push(t.value),t.continue())},r.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},r}return __extends(r,t),r}(t.BaseSelect);t.NotWhere=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeSkipAndLimitForIn=function(e,t){var r,n=this.SkipRecord,o=this,s=this.ObjectStore.index(e),u=function(e){0==n?o.Results.push(e):--n};if(o.CheckFlag)for(var i=0,c=t.length;i=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},r.executeSkipAndLimit=function(){var e,t=this.SkipRecord,r=this,n=function(e){0==t?r.Results.push(e):--t};r.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,r.Results.length!=r.LimitRecord&&e&&(r.filterOnOccurence(e.value)&&r.checkForWhereConditionMatch(e.value)&&n(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,r.Results.length!=r.LimitRecord&&e&&(r.filterOnOccurence(e.value)&&n(e.value),e.continue())}},r.executeSkip=function(){var e,t=this.SkipRecord,r=this,n=function(e){0==t?r.Results.push(e):--t};r.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(r.filterOnOccurence(e.value)&&r.checkForWhereConditionMatch(e.value)&&n(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(r.filterOnOccurence(e.value)&&n(e.value),e.continue())}},r.executeLimit=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(r){e=r.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(r){e=r.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},r.executeSimple=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(r){(e=r.target.result)&&(t.filterOnOccurence(e.value)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(r){(e=r.target.result)&&(t.filterOnOccurence(e.value)&&t.Results.push(e.value),e.continue())}},r.executeLikeLogic=function(e,t,r){var n=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n,o,s=this;t=r?t[r]:t,(n=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r))).onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?function(){var e=!1;s.CheckFlag?n.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:n.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;s.CheckFlag?n.onsuccess=function(t){(o=t.target.result)&&(e?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:n.onsuccess=function(t){(o=t.target.result)&&(e?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.LimitRecord?s.CheckFlag?n.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&s.checkForWhereConditionMatch(o.value)&&(s.Results.push(o.value),o.continue())}:n.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&(s.Results.push(o.value),o.continue())}:s.CheckFlag?n.onsuccess=function(e){(o=e.target.result)&&(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue())}:n.onsuccess=function(e){(o=e.target.result)&&(s.Results.push(o.value),o.continue())}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,r){var n,o=this,s=[],u=0,i=(r.Column,o.Results),c=i.length;new e.Instance({From:r.Table,Where:r.Where,Order:r.Order},function(e){e.forEach(function(e,r){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,n){if(s[u]={},e==t[r.Column]){s[u][r.Table]=t;for(c=0;cn.CurrentQueryStackIndex+1?n.startExecutionJoinLogic():n.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;in.CurrentQueryStackIndex+1?n.startExecutionJoinLogic():n.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][r.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},r}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=e.call(this)||this;return t.executeAggregateGroupBy=function(){var e=this.Query.GroupBy,t=this.Results,r={};this.Results=void 0;var n=this.Query.Aggregate;this.Query.Aggregate=void 0;var o,s,u,i,c=function(){for(var e in n)switch(e){case"Count":var c=function(){return u=r[s],u=u?u["Count("+i+")"]:0,u+=t[o][i]?1:0};if("string"==typeof n[e])i=n[e],t[o]["Count("+i+")"]=c();else if(Array.isArray(n[e]))for(var a in n[e])i=n[e][a],t[o]["Count("+i+")"]=c();break;case"Max":var l=function(){return u=r[s],u=u?u["Max("+i+")"]:0,t[o][i]=t[o][i]?t[o][i]:0,u>t[o][i]?u:t[o][i]};if("string"==typeof n[e])i=n[e],t[o]["Max("+i+")"]=l();else if(Array.isArray(n[e]))for(var a in n[e])i=n[e][a],t[o]["Max("+i+")"]=l();break;case"Min":var h=function(){return u=r[s],u=u?u["Min("+i+")"]:1/0,t[o][i]=t[o][i]?t[o][i]:1/0,u0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,r=e.By;"string"==typeof this.Results[0][r]?"asc"==e.Type?t.Results.sort(function(e,t){return e[r].toLowerCase().localeCompare(t[r].toLowerCase())}):t.Results.sort(function(e,t){return t[r].toLowerCase().localeCompare(e[r].toLowerCase())}):"number"==typeof this.Results[0][r]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[r]-t[r]}):t.Results.sort(function(e,t){return t[r]-e[r]}))}},t.processAggregateQry=function(){var e,t=this.Results,r={};this.Results=void 0;for(var n in this.Query.Aggregate)switch(n){case"Count":var o=function(){var r=0;for(var n in t)r+=t[n][e]?1:0;return r};if("string"==typeof this.Query.Aggregate[n])r["Count("+(e=this.Query.Aggregate[n])+")"]=o();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Count("+(e=this.Query.Aggregate[n][s])+")"]=o();break;case"Max":var u=function(){var r=0;for(var n in t)r=r>t[n][e]?r:t[n][e];return r};if("string"==typeof this.Query.Aggregate[n])r["Max("+(e=this.Query.Aggregate[n])+")"]=u();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Max("+(e=this.Query.Aggregate[n][s])+")"]=u();break;case"Min":var i=function(){var r=1/0,n=1/0;for(var o in t)r=r<(n=t[o][e]?t[o][e]:1/0)?r:n;return r};if("string"==typeof this.Query.Aggregate[n])r["Min("+(e=this.Query.Aggregate[n])+")"]=i();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Min("+(e=this.Query.Aggregate[n][s])+")"]=i();break;case"Sum":var c=function(){var r=0;for(var n in t)r+=t[n][e];return r};if("string"==typeof this.Query.Aggregate[n])r["Sum("+(e=this.Query.Aggregate[n])+")"]=c();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Sum("+(e=this.Query.Aggregate[n][s])+")"]=c();break;case"Avg":var a=function(){var r=0;for(var n in t)r+=t[n][e];return r/t.length};if("string"==typeof this.Query.Aggregate[n])r["Avg("+(e=this.Query.Aggregate[n])+")"]=a();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Avg("+(e=this.Query.Aggregate[n][s])+")"]=a()}for(var n in r)t[0][n]=r[n];this.Results=t},t}return __extends(t,e),t}(e.GroupByHelper);e.Helper=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(n,o,s){var u=r.call(this)||this;u.onTransactionCompleted=function(){this.SendResultFlag&&(this.processOrderBy(),this.Query.GroupBy?this.Query.Aggregate?this.executeAggregateGroupBy():this.processGroupBy():this.Query.Aggregate&&this.processAggregateQry(),this.OnSuccess(this.Results))},u.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readonly"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.orQuerySuccess=function(){this.Results=this.OrInfo.Results,this.OrInfo.Results=void 0,this.removeDuplicates(),this.OrInfo.OnSucess(this.Results)},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess,Results:[]},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){if(this.OrInfo.Results=this.OrInfo.Results.concat(this.Results),!this.Query.Limit||this.Query.Limit>this.OrInfo.Results.length){this.Results=[];var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.orQuerySuccess()}else this.orQuerySuccess()}};var i=u;u.Query=n,u.OnSuccess=o,u.OnError=s,u.SkipRecord=u.Query.Skip,u.LimitRecord=u.Query.Limit;try{u.Transaction=t.DbConnection.transaction([n.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.Transaction.ontimeout=i.onTransactionCompleted,u.ObjectStore=u.Transaction.objectStore(n.From),n.Where?(n.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:n.From})}return u}return __extends(n,r),n}(r.Helper);r.Instance=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=r}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var r,n=this.ObjectStore.openCursor();n.onsuccess=function(t){(r=t.target.result)&&(++e.ResultCount,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var r,n,o=this,s=this.ObjectStore.index(e);if(o.CheckFlag)for(var u=0,i=t.length;u=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},r.executeLikeLogic=function(e,t,r){var n,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&++o.ResultCount,n.continue())}:this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&++o.ResultCount,n.continue())}},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n=this;if(t=r?t[r]:t,n.CheckFlag){(u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r))).onsuccess=function(e){(s=e.target.result)&&(n.checkForWhereConditionMatch(s.value)&&++n.ResultCount,s.continue())},u.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}else if(this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,r));o.onsuccess=function(){n.ResultCount=o.result},o.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}else{var s,u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r));u.onsuccess=function(e){(s=e.target.result)&&(++n.ResultCount,s.continue())},u.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(t){function r(r,n,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=r,s.OnSuccess=n,s.OnError=o;try{var i=function(){u.Transaction=e.DbConnection.transaction([r.From],"readonly"),u.ObjectStore=u.Transaction.objectStore(r.From),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};void 0!=r.Where?r.Where.Or?new e.Select.Instance(r,function(e){u.ResultCount=e.length,u.onTransactionCompleted()},s.OnError):(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}catch(e){s.onExceptionOccured(e,{TableName:r.From})}return s}return __extends(r,t),r}(t.Where);t.Instance=r}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var r in e)if("object"!=typeof e[r])t[r]=e[r];else for(var n in e[r]){switch(n){case"+":t[r]+=e[r][n];break;case"-":t[r]-=e[r][n];break;case"*":t[r]*=e[r][n];break;case"/":t[r]/=e[r][n];break;default:t[r]=e[r]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.executeWhereUndefinedLogic=function(){var e,r=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){(e=n.target.result)&&(e.update(t.updateValue(r.Query.Set,e.value)),++r.RowAffected,e.continue())},n.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}},r}return __extends(r,e),r}(e.BaseUpdate);t.NotWhere=r}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeInLogic=function(t,r){var n,o,s=this,u=this.ObjectStore.index(t);if(s.CheckFlag)for(var i=0,c=r.length;i=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},n.executeLikeLogic=function(e,r,n){var o,s=this;this.CompValue=r.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},s.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&s.checkForWhereConditionMatch(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}:this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}},n}return __extends(n,r),n}(t.In);t.Like=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeWhereLogic=function(t,r,n){var o,s,u=this;r=n?r[n]:r,s=this.ObjectStore.index(t).openCursor(this.getKeyRange(r,n)),u.CheckFlag?s.onsuccess=function(t){(o=t.target.result)&&(u.checkForWhereConditionMatch(o.value)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected),o.continue())}:s.onsuccess=function(t){(o=t.target.result)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected,o.continue())},s.onerror=function(e){u.ErrorOccured=!0,u.onErrorOccured(e)}},r}return __extends(r,t),r}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(e,n,o){var s=r.call(this)||this;s.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},s.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.In],"readwrite"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.In),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},s.executeOrLogic=function(){var e=this;new t.Select.Instance({From:this.Query.In,Where:this.Query.Where},function(t){var r=e.getPrimaryKey(e.Query.In),n=[],o={};t.forEach(function(e){n.push(e[r])}),o[r]={In:n},e.createtransactionForOrLogic({In:e.Query.In,Where:o,Set:e.Query.Set})},this.OnError)};try{if(s.OnSuccess=n,s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e;var u=s,i=function(){u.Transaction=t.DbConnection.transaction([e.In],"readwrite"),u.ObjectStore=u.Transaction.objectStore(e.In),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};e.Where?e.Where.Or?s.executeOrLogic():(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(n,r),n.prototype.checkSchema=function(t,r){if(t){var n=this.getTable(r),o=this;if(n){var s=function(t,r){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,r)};n.Columns.every(function(r){if(o.ErrorOccured)return!1;if(r.Name in t){!function(t){if(r.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:r.Name}),r.DataType){var n=typeof t;if(n!=r.DataType)if("object"!=n)s(e.ErrorType.BadDataType,{ColumnName:r.Name});else{var o=["+","-","*","/"];for(var u in t){o.indexOf(u)<0&&s(e.ErrorType.BadDataType,{ColumnName:r.Name});break}}}}(t[r.Name])}return!0})}else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r});e.throwError(u)}}else this.ErrorOccured=!0,this.OnSuccess(0)},n}(r.Where);r.Instance=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=r}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e,t=this,r=this.ObjectStore.openCursor();r.onsuccess=function(r){(e=r.target.result)&&(e.delete(),++t.RowAffected,e.continue())},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var r,n,o=this;this.ObjectStore.index(e);if(o.CheckFlag)for(var s=0,u=t.length;s=0&&(r=!0);break;case e.Occurence.First:0==n.indexOf(this.CompValue)&&(r=!0);break;default:n.lastIndexOf(this.CompValue)==n.length-this.CompValueLength&&(r=!0)}return r},r.executeLikeLogic=function(e,t,r){var n,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&o.checkForWhereConditionMatch(n.value)&&(n.delete(),++o.RowAffected),n.continue())}:this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.value)&&(n.delete(),++o.RowAffected),n.continue())}},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n,o,s=this;t=r?t[r]:t,o=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r)),s.CheckFlag?o.onsuccess=function(e){(n=e.target.result)&&(s.checkForWhereConditionMatch(n.value)&&(n.delete(),++s.RowAffected),n.continue())}:o.onsuccess=function(e){(n=e.target.result)&&(n.delete(),++s.RowAffected,n.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(n,o,s){var u=r.call(this)||this;u.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},u.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readwrite"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.OrInfo.OnSucess(this.RowAffected)}};try{var i=u;u.Query=n,u.OnSuccess=o,u.OnError=s,u.Transaction=t.DbConnection.transaction([n.From],"readwrite"),u.ObjectStore=u.Transaction.objectStore(n.From),u.Transaction.oncomplete=function(){i.onTransactionCompleted()},u.Transaction.onerror=function(e){i.onErrorOccured(e)},n.Where?(n.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:n.From})}return u}return __extends(n,r),n}(r.Where);r.Instance=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.pushApi=function(e,t){if(!0===t){var r=this;return new Promise(function(t,n){e.OnSuccess=function(e){t(e)},e.OnError=function(e){n(e)},r.prcoessExecutionOfCode(e)})}return this.prcoessExecutionOfCode(e),this},this.prcoessExecutionOfCode=function(t){if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)switch(t.Name){case"create_db":case"open_db":this.RequestQueue.splice(0,0,t),e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode(),e.Status.ConStatus=e.ConnectionStatus.Connected;break;default:this.RequestQueue.push(t)}else this.RequestQueue.push(t),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode();e.EnableLog&&console.log("request pushed: "+t.Name)},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],r={Name:t.Name,Query:t.Query};e.EnableLog&&console.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(r):this.executeCodeDirect(r)}},this.executeCodeDirect=function(t){var r=this;new e.Business.Main(function(e){r.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var r=this.RequestQueue.shift();this.IsCodeExecuting=!1,r&&(e.EnableLog&&console.log("request finished : "+r.Name),t.ErrorOccured?r.OnError&&r.OnError(t.ErrorDetails):r.OnSuccess&&(null!=t.ReturnedValue?r.OnSuccess(t.ReturnedValue):r.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,e.Status.ConStatus==e.ConnectionStatus.NotStarted&&this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},t.executeCodeUsingWorker({Name:"change_log_status",Query:{logging:e.EnableLog}}),setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),e.Status.ConStatus==e.ConnectionStatus.Connected&&t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",r=e?e.toLowerCase():"jsstore",n=document.getElementsByTagName("script"),o=n.length-1,s="";o>=0;o--)if(s=n[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(r)>=0)return t=n[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function r(r){void 0===r&&(r=null);var n=t.call(this)||this;return n.openDb=function(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),this.pushApi({Name:"open_db",Query:e,OnSuccess:t,OnError:r},!1)},n.createDb=function(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),this.pushApi({Name:"create_db",OnSuccess:t,OnError:r,Query:e},!1)},n.dropDb=function(e,t){void 0===t&&(t=null);var r=!e;return this.pushApi({Name:"drop_db",OnSuccess:e,OnError:t},r)},n.select=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"select",Query:e,OnSuccess:t,OnError:r},n)},n.count=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"count",Query:e,OnSuccess:t,OnError:r},n)},n.insert=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"insert",Query:e,OnSuccess:t,OnError:r},n)},n.update=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"update",Query:e,OnSuccess:t,OnError:r},n)},n.delete=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"delete",Query:e,OnSuccess:t,OnError:r},n)},n.clear=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=!t;return this.pushApi({Name:"clear",Query:e,OnSuccess:t,OnError:onerror},n)},n.bulkInsert=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r;var n=!t;return e.OnSuccess=e.OnError=null,this.pushApi({Name:"bulk_insert",Query:e,OnSuccess:t,OnError:r},n)},n.exportJson=function(e){var t=function(t){var r=document.createElement("a");r.href=t,r.download=e.From+".json",r.click(),n&&n()},r=e.OnError,n=e.OnSuccess;e.OnSuccess=e.OnError=void 0;var o=!n;if(o)return new Promise(function(n,s){this.pushApi({Name:"export_json",Query:e,OnSuccess:t,OnError:r},o).then(function(e){t(e),n()}).catch(function(e){s(e)})});this.pushApi({Name:"export_json",Query:e,OnSuccess:t,OnError:r},o)},e.WorkerStatus==e.WebWorkerStatus.Registered?e.WorkerInstance.terminate():e.WorkerStatus==e.WebWorkerStatus.NotStarted&&KeyStore.init(),n.createWorker(),r&&n.openDb(r),n}return __extends(r,t),r}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self&&!self.alert&&(self.onmessage=function(e){JsStore.EnableLog&&console.log("Request executing from WebWorker, request name: "+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)},JsStore.WorkerStatus=JsStore.WebWorkerStatus.Registered,KeyStore.init()); \ No newline at end of file diff --git a/Dist/V 1.3/V 1.3.0/JsStore-1.3.0.d.ts b/Dist/V 1.3/V 1.3.0/JsStore-1.3.0.d.ts deleted file mode 100644 index 9f89b42b..00000000 --- a/Dist/V 1.3/V 1.3.0/JsStore-1.3.0.d.ts +++ /dev/null @@ -1,1005 +0,0 @@ -/** JsStore.js - v1.3.0 - 22/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -declare module KeyStore { - interface IError { - Name: string; - Value: string; - } - class Utils { - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - static setDbType: () => void; - } -} -declare module KeyStore { - interface ISelect { - From: any; - Where: any; - } - interface IDelete { - From: string; - Where: any; - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_connected", - } - interface KeyStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IInsert { - TableName: string; - Set: { - Key: string; - Value; - any; - }; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - var RequestQueue: Array, TableName: string, IsCodeExecuting: boolean; -} -declare module KeyStore { - var prcoessExecutionOfCode: (request: IWebWorkerRequest) => void; - var executeCode: () => void; - var executeCodeDirect: (request: IWebWorkerRequest) => void; - var processFinishedRequest: (message: IWebWorkerResult) => void; -} -declare module KeyStore { - module Business { - class Base { - Results: any; - OnSuccess: Function; - OnError: Function; - ErrorOccured: boolean; - ErrorCount: number; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - protected onErrorOccured: (e: any) => void; - } - } -} -declare module KeyStore { - module Business { - class Get extends Base { - Query: ISelect; - private get; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Set extends Base { - private setData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class Remove extends Base { - Query: IDelete; - RowAffected: number; - private remove; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - class InitDb { - constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module KeyStore { - module Business { - var DbConnection: any, Status: KeyStoreStatus; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private returnResult; - private executeLogic; - set: (query: IInsert, onSuccess: Function, onError: Function) => void; - remove: (query: IDelete, onSuccess: Function, onError: Function) => void; - get: (query: ISelect, onSuccess: Function, onError: Function) => void; - createDb: (tableName: any, onSuccess: Function, onError: Function) => void; - } - } -} -declare module KeyStore { - /** - * Initialize KeyStore - * - */ - var init: () => void; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - var get: (key: string, onSuccess: Function, onError?: Function) => any; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var set: (key: any, value: any, onSuccess?: Function, onError?: Function) => any; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - var remove: (key: string, onSuccess?: Function, onError?: Function) => any; -} -declare module JsStore { - enum ErrorType { - UndefinedColumn = "undefined_column", - UndefinedValue = "undefined_value", - UndefinedColumnName = "undefined_column_name", - UndefinedColumnValue = "undefined_column_value", - NotArray = "not_array", - NoValueSupplied = "no_value_supplied", - ColumnNotExist = "column_not_exist", - InvalidOp = "invalid_operator", - NullValue = "null_value", - BadDataType = "bad_data_type", - NextJoinNotExist = "next_join_not_exist", - TableNotExist = "table_not_exist", - DbNotExist = "db_not_exist", - IndexedDbUndefined = "indexeddb_undefined", - IndexedDbBlocked = "indexeddb_blocked", - } - enum Occurence { - First = "f", - Last = "l", - Any = "a", - } - enum WebWorkerStatus { - Registered = "registerd", - Failed = "failed", - NotStarted = "not_started", - } - enum ConnectionStatus { - Connected = "connected", - Closed = "closed", - NotStarted = "not_started", - UnableToStart = "unable_to_start", - } - enum WhereQryOption { - In = "In", - Like = "Like", - Or = "Or", - } - enum DataType { - String = "string", - Object = "object", - Array = "array", - } -} -declare module JsStore { - interface DbInfo { - DbName: string; - Table: { - Name: string; - Version: number; - }; - } - interface ISelect { - From: any; - Where: any; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - Order: IOrder; - GroupBy: any; - Aggregate: { - Max: any; - Min: any; - Count: any; - Sum: any; - Avg: any; - }; - IgnoreCase: boolean; - } - interface IOrder { - By: string; - Type: string; - } - interface ICount { - From: any; - IgnoreCase: boolean; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IDelete { - From: string; - IgnoreCase: boolean; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IUpdate { - In: string; - IgnoreCase: boolean; - Set: any; - Where: any; - OnSuccess: Function; - OnError: Function; - } - interface IInsert { - Into: string; - Values: Array; - Return: boolean; - OnSuccess: Function; - OnError: Function; - SkipDataCheck: any; - } - interface ICondition { - Column: string; - Value: string; - Op: string; - } - interface ITableJoin { - Column: string; - Table: string; - Where: any; - Order: IOrder; - JoinType: string; - NextJoin: INextJoin; - } - interface ISelectJoin { - From: IJoin; - Count: boolean; - Skip: number; - Limit: number; - OnSuccess: Function; - OnError: Function; - } - interface IJoin { - Table1: ITableJoin; - Join: string; - Table2: ITableJoin; - } - interface INextJoin { - Table: string; - Column: string; - } - interface JsStoreStatus { - ConStatus: ConnectionStatus; - LastError: string; - } - interface IWebWorkerRequest { - Name: string; - Query: any; - OnSuccess: Function; - OnError: Function; - } - interface IWebWorkerResult { - ErrorOccured: boolean; - ErrorDetails: any; - ReturnedValue: any; - } - interface IError { - Name: string; - Message: string; - } - interface IAggregate { - Max: Array; - Min: Array; - Sum: Array; - Count: Array; - Avg: Array; - } -} -declare module JsStore { - var EnableLog: boolean, DbVersion: number, Status: JsStoreStatus, TempResults: Array; - var throwError: (error: any) => never; - var getObjectFirstKey: (value: any) => string; - var log: (msg: any) => void; - var logError: (msg: any) => void; -} -declare module JsStore { - class Utils { - static getError(errorType: ErrorType, errorDetail: any): IError; - static convertObjectintoLowerCase(obj: any): void; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - static setDbType: () => void; - } -} -declare module JsStore { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - var isDbExist: (dbInfo: DbInfo, callback: Function, errCallBack?: Function) => any; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbVersion: (dbName: string, callback: Function) => void; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - var getDbSchema: (dbName: string, callback: Function) => void; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - var isNull: (value: any) => boolean; - /** - * Enable log - * - */ - var enableLog: () => void; - /** - * disable log - * - */ - var disableLog: () => void; -} -declare module JsStore { - module Model { - interface IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - } - class Column implements IColumn { - Name: string; - AutoIncrement: boolean; - PrimaryKey: boolean; - Unique: boolean; - NotNull: boolean; - DataType: string; - Default: any; - constructor(key: IColumn, tableName: string); - } - } -} -declare module JsStore { - module Model { - interface ITable { - Name: string; - Columns: Array; - Version: number; - } - class Table implements ITable { - Name: string; - Columns: Array; - Version: number; - RequireDelete: boolean; - RequireCreation: boolean; - PrimaryKey: string; - constructor(table: ITable, dbName: string); - private setPrimaryKey(dbName); - private setRequireDelete(dbName); - private setDbVersion(dbName); - } - } -} -declare module JsStore { - module Model { - interface IDataBase { - Name: string; - Tables: Array; - } - class DataBase implements IDataBase { - Name: string; - Tables: Array
; - constructor(dataBase: IDataBase); - } - } -} -declare module JsStore { - module Business { - class BaseHelper { - protected getTable: (tableName: string) => Table; - protected getKeyRange: (value: any, op: any) => IDBKeyRange; - protected getObjectSecondKey: (value: any) => string; - protected getPrimaryKey: (tableName: any) => any; - private getKeyPath; - protected sortNumberInAsc: (values: any) => any; - protected sortNumberInDesc: (values: any) => any; - protected sortAlphabetInAsc: (values: any) => any; - protected sortAlphabetInDesc: (values: any) => any; - private getCombination(word); - protected getAllCombinationOfWord(word: any, isArray: any): any[]; - } - } -} -declare module JsStore { - module Business { - class Base extends BaseHelper { - Error: IError; - ErrorOccured: boolean; - ErrorCount: number; - RowAffected: number; - OnSuccess: Function; - OnError: Function; - Transaction: IDBTransaction; - ObjectStore: IDBObjectStore; - Query: any; - SendResultFlag: Boolean; - protected onErrorOccured: (e: any, customError?: boolean) => void; - protected onTransactionTimeout: (e: any) => void; - protected onExceptionOccured: (ex: DOMException, info: any) => void; - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - protected checkForWhereConditionMatch(rowValue: any): boolean; - protected goToWhereLogic: () => void; - protected makeQryInCaseSensitive: (qry: any) => any; - } - } -} -declare module JsStore { - module Business { - class CreateDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class DropDb { - constructor(name: string, onSuccess: Function, onError: Function); - deleteDb: (name: string, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - class InsertHelper extends Base { - ValuesAffected: any[]; - Query: IInsert; - onTransactionCompleted: () => void; - protected checkModifyInsertValues: (table: any, values: any) => void; - } - } -} -declare module JsStore { - module Business { - class Insert extends InsertHelper { - private insertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class BulkInsert extends Base { - ValuesAffected: any[]; - Query: IInsert; - ValuesIndex: number; - Table: Model.ITable; - onTransactionCompleted: () => void; - private bulkinsertData; - constructor(query: IInsert, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class OpenDb { - constructor(dbVersion: any, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - class Clear extends Base { - constructor(tableName: string, onSuccess: Function, onError: Function); - } - } -} -declare module JsStore { - module Business { - var DbConnection: any, ActiveDataBase: DataBase; - class Main { - OnSuccess: Function; - constructor(onSuccess?: any); - checkConnectionAndExecuteLogic: (request: IWebWorkerRequest) => void; - private changeLogStatus; - private returnResult; - private executeLogic; - openDb: (dbName: any, onSuccess: Function, onError: Function) => void; - closeDb: () => void; - dropDb: (onSuccess: Function, onError: Function) => void; - update: (query: IUpdate, onSuccess: Function, onError: Function) => void; - insert: (query: IInsert, onSuccess: Function, onError: Function) => void; - bulkInsert: (query: IInsert, onSuccess: Function, onError: Function) => void; - delete: (query: IDelete, onSuccess: Function, onError: Function) => void; - select: (query: any, onSuccess: Function, onError: Function) => void; - count: (query: any, onSuccess: Function, onError: Function) => void; - createDb: (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) => void; - clear: (tableName: string, onSuccess: Function, onError: Function) => void; - exportJson: (query: ISelect, onSuccess: Function, onError: Function) => void; - } - } -} -declare module JsStore { - module Business { - module Select { - class BaseSelect extends Base { - Results: any[]; - Sorted: boolean; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - protected removeDuplicates: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class NotWhere extends BaseSelect { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class In extends NotWhere { - private executeSkipAndLimitForIn; - private executeSkipForIn; - private executeLimitForIn; - private executeSimpleForIn; - protected executeInLogic: (column: any, values: any) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - private executeSkipAndLimit; - private executeSkip; - private executeLimit; - private executeSimple; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Join extends BaseSelect { - Query: ISelectJoin; - QueryStack: Array; - CurrentQueryStackIndex: number; - private onTransactionCompleted; - private executeWhereJoinLogic; - private executeRightJoin; - private executeWhereUndefinedLogicForJoin; - private startExecutionJoinLogic(); - constructor(query: ISelectJoin, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class GroupByHelper extends Where { - constructor(); - private executeAggregateGroupBy; - protected processGroupBy: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Helper extends GroupByHelper { - processOrderBy: () => void; - private processAggregateQry; - constructor(); - } - } - } -} -declare module JsStore { - module Business { - module Select { - class Instance extends Helper { - onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private orQuerySuccess; - private executeOrLogic; - constructor(query: ISelect, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Count { - class BaseCount extends Base { - ResultCount: number; - SkipRecord: any; - LimitRecord: any; - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class NotWhere extends BaseCount { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Count { - class Instance extends Where { - onTransactionCompleted: () => void; - constructor(query: ICount, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - module Business { - module Update { - var updateValue: (suppliedValue: any, storedValue: any) => any; - } - class BaseUpdate extends Base { - CheckFlag: boolean; - } - } -} -declare module JsStore { - module Business { - module Update { - class NotWhere extends BaseUpdate { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Update { - class Instance extends Where { - protected onTransactionCompleted: () => void; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IUpdate, onSuccess: Function, onError: Function); - private checkSchema(suppliedValue, tableName); - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class BaseDelete extends Base { - CheckFlag: boolean; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class NotWhere extends BaseDelete { - protected executeWhereUndefinedLogic: () => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class In extends NotWhere { - private executeInLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Like extends In { - CompSymbol: Occurence; - CompValue: any; - Column: any; - CompValueLength: Number; - private filterOnOccurence; - protected executeLikeLogic: (column: any, value: any, symbol: Occurence) => void; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Where extends Like { - private executeWhereLogic; - } - } - } -} -declare module JsStore { - module Business { - module Delete { - class Instance extends Where { - private onTransactionCompleted; - private createtransactionForOrLogic; - private executeOrLogic; - constructor(query: IDelete, onSuccess: Function, onError: Function); - } - } - } -} -declare module JsStore { - var WorkerStatus: WebWorkerStatus, WorkerInstance: Worker; - class CodeExecutionHelper { - RequestQueue: Array; - IsCodeExecuting: boolean; - protected pushApi: (request: IWebWorkerRequest, usePromise: boolean) => any; - private prcoessExecutionOfCode; - private executeCode; - private executeCodeDirect; - private executeCodeUsingWorker; - private processFinishedRequest; - private onWorkerFailed; - protected createWorker: () => void; - private getScriptUrl(fileName); - private onMessageFromWorker; - } -} -import Model = JsStore.Model; -import DataBase = Model.DataBase; -import Column = Model.Column; -import Table = Model.Table; -declare var Promise: any; -declare module JsStore { - class Instance extends CodeExecutionHelper { - constructor(dbName?: any); - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - openDb: (dbName: string, onSuccess?: Function, onError?: Function) => any; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - createDb: (dataBase: Model.IDataBase, onSuccess?: Function, onError?: Function) => any; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - dropDb: (onSuccess: Function, onError?: Function) => any; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - select: (query: ISelect, onSuccess?: Function, onError?: Function) => any; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - count: (query: ICount, onSuccess?: Function, onError?: Function) => any; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - insert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - update: (query: IUpdate, onSuccess?: Function, onError?: Function) => any; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - delete: (query: IDelete, onSuccess?: Function, onError?: Function) => any; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - clear: (tableName: string, onSuccess?: Function, onError?: Function) => any; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - bulkInsert: (query: IInsert, onSuccess?: Function, onError?: Function) => any; - /** - * export the result in json file - * - * @param {ISelect} qry - * @memberof Instance - */ - exportJson: (query: ISelect) => any; - } -} -export = JsStore; \ No newline at end of file diff --git a/Dist/V 1.3/V 1.3.0/JsStore-1.3.0.js b/Dist/V 1.3/V 1.3.0/JsStore-1.3.0.js deleted file mode 100644 index 6e74bdde..00000000 --- a/Dist/V 1.3/V 1.3.0/JsStore-1.3.0.js +++ /dev/null @@ -1,4911 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -/** JsStore.js - v1.3.0 - 22/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var KeyStore; -(function (KeyStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - /** - * determine and set the DataBase Type - * - * - * @memberOf UtilityLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else if (!self.alert) { - console.log('worked failed'); - self.postMessage('message:WorkerFailed'); - } - else { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbUndefined - }; - } - }; - return Utils; - }()); - KeyStore.Utils = Utils; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_connected"; - })(ConnectionStatus = KeyStore.ConnectionStatus || (KeyStore.ConnectionStatus = {})); - KeyStore.RequestQueue = [], KeyStore.TableName = "LocalStore", KeyStore.IsCodeExecuting = false; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - KeyStore.prcoessExecutionOfCode = function (request) { - KeyStore.RequestQueue.push(request); - if (KeyStore.RequestQueue.length == 1) { - KeyStore.executeCode(); - } - }; - KeyStore.executeCode = function () { - if (!KeyStore.IsCodeExecuting && KeyStore.RequestQueue.length > 0) { - KeyStore.IsCodeExecuting = true; - var Request = { - Name: KeyStore.RequestQueue[0].Name, - Query: KeyStore.RequestQueue[0].Query - }; - KeyStore.executeCodeDirect(Request); - } - }; - KeyStore.executeCodeDirect = function (request) { - var That = this; - new KeyStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - KeyStore.processFinishedRequest = function (message) { - var FinishedRequest = KeyStore.RequestQueue.shift(); - KeyStore.IsCodeExecuting = false; - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - else { - console.log(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - }; -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function () { - function Base() { - this.Results = null; - this.ErrorOccured = false; - this.ErrorCount = 0; - this.onErrorOccured = function (e) { - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - this.OnError(e.target.error); - } - } - console.error(e); - }; - } - return Base; - }()); - Business.Base = Base; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Get = /** @class */ (function (_super) { - __extends(Get, _super); - function Get(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.get = function () { - var That = this, getData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - That.Results = Cursor.value['Value']; - } - }; - }; - for (var column in this.Query.Where) { - getData(column, this.Query.Where[column]); - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(That.Results); - } - }; - _this.get(); - return _this; - } - return Get; - }(Business.Base)); - Business.Get = Get; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Set = /** @class */ (function (_super) { - __extends(Set, _super); - function Set(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.setData = function (value) { - var That = this, updateIfExistElseInsert = function () { - var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key'])); - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.value['Value'] = value['Value']; - Cursor.update(Cursor.value); - } - else { - insertData(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }, insertData = function () { - var AddResult = That.ObjectStore.add(value); - AddResult.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - updateIfExistElseInsert(); - }; - try { - var That = _this; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.TableName], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.TableName); - _this.Transaction.oncomplete = function (e) { - if (onSuccess != null) { - onSuccess(); - } - }; - _this.setData(query.Set); - } - catch (ex) { - console.error(ex); - } - return _this; - } - return Set; - }(Business.Base)); - Business.Set = Set; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var Remove = /** @class */ (function (_super) { - __extends(Remove, _super); - function Remove(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.RowAffected = 0; - _this.remove = function () { - var That = this, removeData = function (column, value) { - var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - CursorOpenRequest.onsuccess = function (e) { - var Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - }; - for (var Column in this.Query.Where) { - if (!That.ErrorOccured) { - removeData(Column, That.Query.Where[Column]); - } - break; - } - }; - var That = _this; - _this.Query = query; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - if (onSuccess != null) { - onSuccess(That.RowAffected); - } - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - _this.remove(); - return _this; - } - return Remove; - }(Business.Base)); - Business.Remove = Remove; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - var InitDb = /** @class */ (function () { - function InitDb(dbName, tableName, onSuccess, onError) { - var That = this, DbRequest = self.indexedDB.open(dbName, 1); - DbRequest.onerror = function (event) { - if (event.target.error.name == 'InvalidStateError') { - JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.UnableToStart, - LastError: JsStore.ErrorType.IndexedDbBlocked, - }; - } - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - Business.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - Business.Status.ConStatus = KeyStore.ConnectionStatus.Closed; - Business.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result, Column = "Key"; - db.createObjectStore(tableName, { - keyPath: Column - }).createIndex(Column, Column, { unique: true }); - }; - } - return InitDb; - }()); - Business.InitDb = InitDb; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - var Business; - (function (Business) { - Business.Status = { - ConStatus: KeyStore.ConnectionStatus.NotStarted, - LastError: "" - }; - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - if (request.Name == 'create_db' || request.Name == 'open_db') { - this.executeLogic(request); - } - else { - if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Connected) { - this.executeLogic(request); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.NotStarted) { - var That = this; - setTimeout(function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - else if (Business.Status.ConStatus == KeyStore.ConnectionStatus.Closed) { - var That = this; - this.createDb(KeyStore.TableName, function () { - That.checkConnectionAndExecuteLogic(request); - }, 100); - } - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'get': - this.get(request.Query, OnSuccess, OnError); - break; - case 'set': - this.set(request.Query, OnSuccess, OnError); - break; - case 'remove': - this.remove(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - } - }; - this.set = function (query, onSuccess, onError) { - var ObjInsert = new Business.Set(query, onSuccess, onError); - }; - this.remove = function (query, onSuccess, onError) { - var ObjDelete = new Business.Remove(query, onSuccess, onError); - }; - this.get = function (query, onSuccess, onError) { - new Business.Get(query, onSuccess, onError); - }; - this.createDb = function (tableName, onSuccess, onError) { - var DbName = "KeyStore"; - new Business.InitDb(DbName, tableName, onSuccess, onError); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = KeyStore.Business || (KeyStore.Business = {})); -})(KeyStore || (KeyStore = {})); -var KeyStore; -(function (KeyStore) { - /** - * Initialize KeyStore - * - */ - KeyStore.init = function () { - KeyStore.Utils.setDbType(); - if (indexedDB) { - KeyStore.prcoessExecutionOfCode({ - Name: 'create_db', - Query: KeyStore.TableName - }); - } - }; - /** - * return the value by key - * - * @param {string} key - * @param {Function} onSuccess - * @param {Function} [onError=null] - */ - KeyStore.get = function (key, onSuccess, onError) { - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'get', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * insert or update value - * - * @param {any} key - * @param {any} value - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.set = function (key, value, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - TableName: this.TableName, - Set: { - Key: key, - Value: value - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'set', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; - /** - * delete value - * - * @param {string} key - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - */ - KeyStore.remove = function (key, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var Query = { - From: this.TableName, - Where: { - Key: key - } - }; - KeyStore.prcoessExecutionOfCode({ - Name: 'remove', - Query: Query, - OnSuccess: onSuccess, - OnError: onError - }); - return this; - }; -})(KeyStore || (KeyStore = {})); -var JsStore; -(function (JsStore) { - var ErrorType; - (function (ErrorType) { - ErrorType["UndefinedColumn"] = "undefined_column"; - ErrorType["UndefinedValue"] = "undefined_value"; - ErrorType["UndefinedColumnName"] = "undefined_column_name"; - ErrorType["UndefinedColumnValue"] = "undefined_column_value"; - ErrorType["NotArray"] = "not_array"; - ErrorType["NoValueSupplied"] = "no_value_supplied"; - ErrorType["ColumnNotExist"] = "column_not_exist"; - ErrorType["InvalidOp"] = "invalid_operator"; - ErrorType["NullValue"] = "null_value"; - ErrorType["BadDataType"] = "bad_data_type"; - ErrorType["NextJoinNotExist"] = "next_join_not_exist"; - ErrorType["TableNotExist"] = "table_not_exist"; - ErrorType["DbNotExist"] = "db_not_exist"; - ErrorType["IndexedDbUndefined"] = "indexeddb_undefined"; - ErrorType["IndexedDbBlocked"] = "indexeddb_blocked"; - })(ErrorType = JsStore.ErrorType || (JsStore.ErrorType = {})); - var Occurence; - (function (Occurence) { - Occurence["First"] = "f"; - Occurence["Last"] = "l"; - Occurence["Any"] = "a"; - })(Occurence = JsStore.Occurence || (JsStore.Occurence = {})); - ; - var WebWorkerStatus; - (function (WebWorkerStatus) { - WebWorkerStatus["Registered"] = "registerd"; - WebWorkerStatus["Failed"] = "failed"; - WebWorkerStatus["NotStarted"] = "not_started"; - })(WebWorkerStatus = JsStore.WebWorkerStatus || (JsStore.WebWorkerStatus = {})); - ; - var ConnectionStatus; - (function (ConnectionStatus) { - ConnectionStatus["Connected"] = "connected"; - ConnectionStatus["Closed"] = "closed"; - ConnectionStatus["NotStarted"] = "not_started"; - ConnectionStatus["UnableToStart"] = "unable_to_start"; - })(ConnectionStatus = JsStore.ConnectionStatus || (JsStore.ConnectionStatus = {})); - var WhereQryOption; - (function (WhereQryOption) { - WhereQryOption["In"] = "In"; - WhereQryOption["Like"] = "Like"; - WhereQryOption["Or"] = "Or"; - })(WhereQryOption = JsStore.WhereQryOption || (JsStore.WhereQryOption = {})); - var DataType; - (function (DataType) { - DataType["String"] = "string"; - DataType["Object"] = "object"; - DataType["Array"] = "array"; - })(DataType = JsStore.DataType || (JsStore.DataType = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.EnableLog = false, JsStore.DbVersion = 0, JsStore.Status = { - ConStatus: JsStore.ConnectionStatus.NotStarted, - LastError: "" - }, JsStore.TempResults = []; - JsStore.throwError = function (error) { - throw error; - }; - JsStore.getObjectFirstKey = function (value) { - for (var key in value) { - return key; - } - return null; - }; - JsStore.log = function (msg) { - if (JsStore.EnableLog) { - console.log(msg); - } - }; - JsStore.logError = function (msg) { - if (JsStore.EnableLog) { - console.error(msg); - } - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Utils = /** @class */ (function () { - function Utils() { - } - Utils.getError = function (errorType, errorDetail) { - var Error = { - Name: errorType, - Message: '' - }; - switch (errorType) { - case JsStore.ErrorType.NotArray: - Error.Message = "Supplied value is not an array"; - break; - case JsStore.ErrorType.UndefinedColumn: - Error.Message = "Column is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedValue: - Error.Message = "Value is undefined in Where"; - break; - case JsStore.ErrorType.UndefinedColumnName: - Error.Message = "Column name is undefined"; - break; - case JsStore.ErrorType.UndefinedColumnValue: - Error.Message = "Column value is undefined"; - break; - case JsStore.ErrorType.NoValueSupplied: - Error.Message = "No value supplied"; - break; - case JsStore.ErrorType.InvalidOp: - Error.Message = "Invalid Op Value '" + errorDetail['Op'] + "'"; - break; - case JsStore.ErrorType.ColumnNotExist: - Error.Message = "Column '" + errorDetail['ColumnName'] + "' does not exist"; - break; - case JsStore.ErrorType.NullValue: - Error.Message = "Null value is not allowed for column '" + errorDetail['ColumnName'] + "'"; - break; - case JsStore.ErrorType.BadDataType: - Error.Message = "Supplied value for column '" + errorDetail['ColumnName'] + "' does not have valid type"; - break; - case JsStore.ErrorType.NextJoinNotExist: - Error.Message = "Next join details not supplied"; - break; - case JsStore.ErrorType.TableNotExist: - Error.Message = "Table '" + errorDetail['TableName'] + "' does not exist"; - break; - case JsStore.ErrorType.DbNotExist: - Error.Message = "Database '" + errorDetail['DbName'] + "' does not exist"; - break; - default: console.error('the error type is not defined'); - } - return Error; - }; - Utils.convertObjectintoLowerCase = function (obj) { - var keys = Object.keys(obj); - var n = keys.length; - while (n--) { - var key = keys[n]; - obj[key.toLowerCase()] = obj[key]; - delete obj[key]; - } - }; - /** - * determine and set the DataBase Type - * - * - * @memberOf MainLogic - */ - Utils.setDbType = function () { - self.indexedDB = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB; - if (indexedDB) { - self.IDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction; - self.IDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange; - } - else { - JsStore.throwError('Your browser doesnot support IndexedDb'); - } - }; - return Utils; - }()); - JsStore.Utils = Utils; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - /** - * checks whether db exist or not - * - * @param {DbInfo} dbInfo - * @param {Function} callback - * @param {Function} errCallBack - */ - JsStore.isDbExist = function (dbInfo, callback, errCallBack) { - if (errCallBack === void 0) { errCallBack = null; } - var UsePromise = callback ? false : true; - if (JsStore.Status.ConStatus != JsStore.ConnectionStatus.UnableToStart) { - var DbName; - if (UsePromise) { - return new Promise(function (resolve, reject) { - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - resolve(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - resolve(dbInfo.Table.Version <= dbVersion); - }); - } - }); - } - else { - if (typeof dbInfo == 'string') { - JsStore.getDbVersion(dbInfo, function (dbVersion) { - callback(Boolean(dbVersion)); - }); - } - else { - JsStore.getDbVersion(dbInfo.DbName, function (dbVersion) { - callback(dbInfo.Table.Version <= dbVersion); - }); - } - } - } - else { - var Error = { - Name: JsStore.Status.LastError, - Message: '' - }; - switch (Error.Name) { - case JsStore.ErrorType.IndexedDbBlocked: - Error.Message = "IndexedDB is blocked"; - break; - case JsStore.ErrorType.IndexedDbUndefined: - Error.Message = "IndexedDB is not supported"; - break; - } - if (UsePromise) { - return new Promise(function (resolve, reject) { - reject(Error); - }); - } - else if (errCallBack) { - errCallBack(Error); - } - } - }; - /** - * get Db Version - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbVersion = function (dbName, callback) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - callback(Number(dbVersion)); - }); - }; - /** - * get Database Schema - * - * @param {string} dbName - * @param {Function} callback - */ - JsStore.getDbSchema = function (dbName, callback) { - if (callback) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - callback(result); - }); - } - }; - /** - * check value null or not - * - * @param {any} value - * @returns - */ - JsStore.isNull = function (value) { - if (value == null) { - return true; - } - else { - switch (typeof value) { - case 'string': return value.length == 0; - case 'number': return isNaN(value); - } - } - return false; - }; - /** - * Enable log - * - */ - JsStore.enableLog = function () { - JsStore.EnableLog = true; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; - /** - * disable log - * - */ - JsStore.disableLog = function () { - JsStore.EnableLog = false; - if (JsStore.WorkerInstance) { - JsStore.WorkerInstance.postMessage({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - } - }; -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Column = /** @class */ (function () { - function Column(key, tableName) { - if (key.Name != null) { - this.Name = key.Name; - } - else { - JsStore.throwError("Column Name is not defined for table:" + tableName); - } - this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false; - this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false; - this.Unique = key.Unique != null ? key.Unique : false; - this.NotNull = key.NotNull != null ? key.NotNull : false; - this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null); - this.Default = key.Default; - } - return Column; - }()); - Model.Column = Column; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var Table = /** @class */ (function () { - function Table(table, dbName) { - this.Name = ""; - this.Columns = []; - //internal Members - this.RequireDelete = false; - this.RequireCreation = false; - this.PrimaryKey = ""; - this.Name = table.Name; - this.Version = table.Version == undefined ? 1 : table.Version; - var That = this; - table.Columns.forEach(function (item) { - That.Columns.push(new Model.Column(item, table.Name)); - }); - this.setRequireDelete(dbName); - this.setDbVersion(dbName); - this.setPrimaryKey(dbName); - } - //private methods - Table.prototype.setPrimaryKey = function (dbName) { - var That = this; - this.Columns.forEach(function (item) { - if (item.PrimaryKey) { - That.PrimaryKey = item.Name; - } - }); - }; - Table.prototype.setRequireDelete = function (dbName) { - var That = this; - KeyStore.get("JsStore_" + dbName + "_" + this.Name + "_Version", function (tableVersion) { - if (tableVersion == null) { - That.RequireCreation = true; - } - else if (tableVersion < That.Version) { - That.RequireDelete = true; - } - }); - }; - Table.prototype.setDbVersion = function (dbName) { - var That = this; - JsStore.DbVersion = JsStore.DbVersion > That.Version ? JsStore.DbVersion : That.Version; - //setting db version - KeyStore.set('JsStore_' + dbName + '_Db_Version', JsStore.DbVersion) - .set("JsStore_" + dbName + "_" + That.Name + "_Version", JsStore.DbVersion); - That.Version = JsStore.DbVersion; - }; - return Table; - }()); - Model.Table = Table; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Model; - (function (Model) { - var DataBase = /** @class */ (function () { - function DataBase(dataBase) { - this.Tables = []; - var That = this; - this.Name = dataBase.Name; - dataBase.Tables.forEach(function (item) { - That.Tables.push(new Model.Table(item, That.Name)); - }); - } - return DataBase; - }()); - Model.DataBase = DataBase; - })(Model = JsStore.Model || (JsStore.Model = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var BaseHelper = /** @class */ (function () { - function BaseHelper() { - this.getTable = function (tableName) { - var CurrentTable, That = this; - Business.ActiveDataBase.Tables.every(function (table) { - if (table.Name == tableName) { - CurrentTable = table; - return false; - } - return true; - }); - return CurrentTable; - }; - this.getKeyRange = function (value, op) { - var KeyRange; - switch (op) { - case '-': - KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); - break; - case '>': - KeyRange = IDBKeyRange.lowerBound(value, true); - break; - case '>=': - KeyRange = IDBKeyRange.lowerBound(value); - break; - case '<': - KeyRange = IDBKeyRange.upperBound(value, true); - break; - case '<=': - KeyRange = IDBKeyRange.upperBound(value); - break; - default: - KeyRange = IDBKeyRange.only(value); - break; - } - return KeyRange; - }; - this.getObjectSecondKey = function (value) { - var IsSecond = false; - for (var key in value) { - if (IsSecond) { - return key; - } - else { - IsSecond = true; - } - } - }; - this.getPrimaryKey = function (tableName) { - var PrimaryKey = this.getTable(tableName).PrimaryKey; - return PrimaryKey ? PrimaryKey : this.getKeyPath(); - }; - this.getKeyPath = function (tableName) { - var Transaction = Business.DbConnection.transaction([tableName], "readonly"), ObjectStore = Transaction.objectStore(tableName); - return ObjectStore.keyPath; - }; - this.sortNumberInAsc = function (values) { - values.sort(function (a, b) { - return a - b; - }); - return values; - }; - this.sortNumberInDesc = function (values) { - values.sort(function (a, b) { - return b - a; - }); - return values; - }; - this.sortAlphabetInAsc = function (values) { - values.sort(function (a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); - return values; - }; - this.sortAlphabetInDesc = function (values) { - values.sort(function (a, b) { - return b.toLowerCase().localeCompare(a.toLowerCase()); - }); - return values; - }; - } - BaseHelper.prototype.getCombination = function (word) { - var Results = [], doAndPushCombination = function (word, chars, index) { - if (index == word.length) { - Results.push(chars.join("")); - } - else { - var ch = word.charAt(index); - chars[index] = ch.toLowerCase(); - doAndPushCombination(word, chars, index + 1); - chars[index] = ch.toUpperCase(); - doAndPushCombination(word, chars, index + 1); - } - }; - doAndPushCombination(word, [], 0); - return Results; - }; - BaseHelper.prototype.getAllCombinationOfWord = function (word, isArray) { - if (isArray) { - var Results = []; - for (var i = 0, length = word.length; i < length; i++) { - Results = Results.concat(this.getCombination(word[i])); - } - return Results; - } - else { - return this.getCombination(word); - } - }; - return BaseHelper; - }()); - Business.BaseHelper = BaseHelper; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Base = /** @class */ (function (_super) { - __extends(Base, _super); - function Base() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ErrorOccured = false; - _this.ErrorCount = 0; - _this.RowAffected = 0; - _this.SendResultFlag = true; - _this.onErrorOccured = function (e, customError) { - if (customError === void 0) { customError = false; } - ++this.ErrorCount; - if (this.ErrorCount == 1) { - if (this.OnError != null) { - if (!customError) { - var Error = { - Name: e.target.error.name, - Message: e.target.error.message - }; - this.OnError(Error); - } - else { - this.OnError(e); - } - JsStore.logError(Error); - } - } - }; - _this.onTransactionTimeout = function (e) { - console.log('transaction timed out'); - }; - _this.onExceptionOccured = function (ex, info) { - switch (ex.name) { - case 'NotFoundError': - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, info); - JsStore.throwError(Error); - default: console.error(ex); - } - }; - _this.goToWhereLogic = function () { - var Column = JsStore.getObjectFirstKey(this.Query.Where); - if (this.Query.IgnoreCase === true) { - this.Query.Where = this.makeQryInCaseSensitive(this.Query.Where); - } - if (this.ObjectStore.indexNames.contains(Column)) { - var Value = this.Query.Where[Column]; - if (typeof Value == 'object') { - this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1); - var Key = JsStore.getObjectFirstKey(Value); - switch (Key) { - case 'Like': - { - var FilterValue = Value.Like.split('%'); - if (FilterValue[1]) { - if (FilterValue.length > 2) { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Any); - } - else { - this.executeLikeLogic(Column, FilterValue[1], JsStore.Occurence.Last); - } - } - else { - this.executeLikeLogic(Column, FilterValue[0], JsStore.Occurence.First); - } - } - ; - break; - case 'In': - this.executeInLogic(Column, Value['In']); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - this.executeWhereLogic(Column, Value, Key); - break; - case 'Aggregate': break; - default: this.executeWhereLogic(Column, Value); - } - } - else { - this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1); - this.executeWhereLogic(Column, Value); - } - } - else { - this.ErrorOccured = true; - this.Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: Column }); - JsStore.throwError(this.Error); - } - }; - _this.makeQryInCaseSensitive = function (qry) { - var Results = [], ColumnValue, KeyValue; - for (var column in qry) { - ColumnValue = qry[column]; - if (typeof ColumnValue == 'object') { - for (var key in ColumnValue) { - KeyValue = ColumnValue[key]; - switch (key) { - case JsStore.WhereQryOption.In: - Results = Results.concat(this.getAllCombinationOfWord(KeyValue, true)); - break; - case JsStore.WhereQryOption.Like: - break; - default: - Results = Results.concat(this.getAllCombinationOfWord(KeyValue)); - } - } - qry[column]['In'] = Results; - } - else { - Results = Results.concat(this.getAllCombinationOfWord(ColumnValue)); - qry[column] = { - In: Results - }; - } - } - return qry; - }; - return _this; - } - /** - * For matching the different column value existance - * - * @private - * @param {any} where - * @param {any} value - * @returns - * - * @memberOf SelectLogic - */ - Base.prototype.checkForWhereConditionMatch = function (rowValue) { - var Where = this.Query.Where, Status = true; - var checkIn = function (column, value) { - var Values = Where[column].In; - for (var i = 0, length = Values.length; i < length; i++) { - if (Values[i] == value) { - Status = true; - break; - } - else { - Status = false; - } - } - ; - }, checkLike = function (column, value) { - var Values = Where[column].Like.split('%'), CompSymbol, CompValue, SymbolIndex; - if (Values[1]) { - CompValue = Values[1]; - CompSymbol = Values.length > 2 ? JsStore.Occurence.Any : JsStore.Occurence.Last; - } - else { - CompValue = Values[0]; - CompSymbol = JsStore.Occurence.First; - } - value = value.toLowerCase(); - switch (CompSymbol) { - case JsStore.Occurence.Any: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex < 0) { - Status = false; - } - ; - break; - case JsStore.Occurence.First: - SymbolIndex = value.indexOf(CompValue.toLowerCase()); - if (SymbolIndex > 0 || SymbolIndex < 0) { - Status = false; - } - ; - break; - default: - SymbolIndex = value.lastIndexOf(CompValue.toLowerCase()); - if (SymbolIndex < value.length - CompValue.length) { - Status = false; - } - ; - } - }, checkComparisionOp = function (column, value, symbol) { - var CompareValue = Where[column][symbol]; - switch (symbol) { - //greater than - case '>': - if (value <= CompareValue) { - Status = false; - } - ; - break; - //less than - case '<': - if (value >= CompareValue) { - Status = false; - } - ; - break; - //less than equal - case '<=': - if (value > CompareValue) { - Status = false; - } - ; - break; - //greather than equal - case '>=': - if (value < CompareValue) { - Status = false; - } - ; - break; - //between - case '-': - if (value < CompareValue.Low || value > CompareValue.High) { - Status = false; - } - ; - break; - } - }; - for (var Column in Where) { - var ColumnValue = Where[Column]; - if (Status) { - if (typeof ColumnValue == 'object') { - for (var key in ColumnValue) { - if (Status) { - switch (key) { - case 'In': - checkIn(Column, rowValue[Column]); - break; - case 'Like': - checkLike(Column, rowValue[Column]); - break; - case '-': - case '>': - case '<': - case '>=': - case '<=': - checkComparisionOp(Column, rowValue[Column], key); - break; - } - } - else { - break; - } - } - } - else { - var CompareValue = rowValue[Column]; - if (ColumnValue != CompareValue) { - Status = false; - break; - } - } - } - else { - break; - } - } - return Status; - }; - return Base; - }(Business.BaseHelper)); - Business.Base = Base; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var CreateDb = /** @class */ (function () { - function CreateDb(dbVersion, onSuccess, onError) { - var That = this, DbCreatedList = [], DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion); - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection aborted"; - }; - if (onSuccess != null) { - onSuccess(DbCreatedList); - } - //save dbSchema in keystore - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_Schema", Business.ActiveDataBase); - }; - DbRequest.onupgradeneeded = function (event) { - var db = event.target.result; - Business.ActiveDataBase.Tables.forEach(function (item) { - if (item.RequireDelete) { - // Delete the old datastore. - if (db.objectStoreNames.contains(item.Name)) { - db.deleteObjectStore(item.Name); - } - createObjectStore(db, item); - } - else if (item.RequireCreation) { - createObjectStore(db, item); - } - }); - }; - var createObjectStore = function (dbConnection, item) { - try { - if (item.PrimaryKey.length > 0) { - var Store = dbConnection.createObjectStore(item.Name, { - keyPath: item.PrimaryKey - }); - item.Columns.forEach(function (column) { - if (column.PrimaryKey) { - Store.createIndex(column.Name, column.Name, { unique: true }); - } - else { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - } - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - else { - var Store = dbConnection.createObjectStore(item.Name, { - autoIncrement: true - }); - item.Columns.forEach(function (column) { - Store.createIndex(column.Name, column.Name, { unique: column.Unique }); - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_" + column.Name + "_Value", 0); - } - }); - } - DbCreatedList.push(item.Name); - //setting the table version - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + item.Name + "_Version", item.Version); - } - catch (e) { - console.error(e); - } - }; - } - return CreateDb; - }()); - Business.CreateDb = CreateDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var DropDb = /** @class */ (function () { - function DropDb(name, onSuccess, onError) { - this.deleteDb = function (name, onSuccess, onError) { - var DbDropRequest = indexedDB.deleteDatabase(name); - DbDropRequest.onblocked = function () { - if (onError != null) { - onError("database is blocked, cant be deleted right now."); - } - ; - }; - DbDropRequest.onerror = function (e) { - if (onError != null) { - onError(event.target.error); - } - }; - DbDropRequest.onsuccess = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - KeyStore.remove('JsStore_' + Business.ActiveDataBase.Name + '_Db_Version'); - Business.ActiveDataBase.Tables.forEach(function (table) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_Version"); - table.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_" + table.Name + "_" + column.Name + "_Value"); - } - }); - }); - KeyStore.remove("JsStore_" + Business.ActiveDataBase.Name + "_Schema"); - onSuccess(); - }; - }; - var That = this; - Business.DbConnection.close(); - setTimeout(function () { - That.deleteDb(name, onSuccess, onError); - }, 100); - } - return DropDb; - }()); - Business.DropDb = DropDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var InsertHelper = /** @class */ (function (_super) { - __extends(InsertHelper, _super); - function InsertHelper() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ValuesAffected = []; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.checkModifyInsertValues = function (table, values) { - var That = this, ValueIndex = 0, Value, TableName = table.Name, checkDatas = function () { - Value = values[ValueIndex++]; - checkInternal(); - }, checkInternal = function () { - if (Value) { - checkAndModifyValue(); - } - else { - That.insertData(values); - } - }, checkAndModifyValue = function () { - var Index = 0, checkAndModifyColumn = function (column) { - if (column) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }, CheckNotNullAndDataType = function () { - //check not null schema - if (column.NotNull && JsStore.isNull(Value[column.Name])) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - else if (column.DataType && typeof Value[column.Name] != column.DataType) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - checkAndModifyColumn(table.Columns[Index++]); - }; - if (!That.ErrorOccured) { - //check auto increment scheme - if (column.AutoIncrement) { - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", function (columnValue) { - Value[column.Name] = ++columnValue; - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + TableName + "_" + column.Name + "_Value", columnValue); - CheckNotNullAndDataType(); - }); - } - else if (column.Default && Value[column.Name] == null) { - Value[column.Name] = column.Default; - CheckNotNullAndDataType(); - } - else { - CheckNotNullAndDataType(); - } - } - else { - That.onErrorOccured(That.Error, true); - } - } - else { - checkDatas(); - } - }; - checkAndModifyColumn(table.Columns[Index++]); - }; - checkDatas(); - }; - return _this; - } - return InsertHelper; - }(Business.Base)); - Business.InsertHelper = InsertHelper; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Insert = /** @class */ (function (_super) { - __extends(Insert, _super); - function Insert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.insertData = function (values) { - var That = this, ValueIndex = 0, IsReturn = this.Query.Return, insertDataintoTable; - if (IsReturn) { - insertDataintoTable = function (value) { - if (value) { - var AddResult = ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - That.ValuesAffected.push(value); - insertDataintoTable(values[ValueIndex++]); - }; - } - }; - } - else { - insertDataintoTable = function (value) { - if (value) { - var AddResult = ObjectStore.add(value); - AddResult.onerror = function (e) { - That.onErrorOccured(e); - }; - AddResult.onsuccess = function (e) { - ++That.RowAffected; - insertDataintoTable(values[ValueIndex++]); - }; - } - }; - } - That.Transaction = Business.DbConnection.transaction([That.Query.Into], "readwrite"); - var ObjectStore = That.Transaction.objectStore(That.Query.Into); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - insertDataintoTable(values[ValueIndex++]); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var Table = _this.getTable(query.Into); - if (Table) { - if (_this.Query.SkipDataCheck) { - _this.insertData(_this.Query.Values); - //remove values - _this.Query.Values = undefined; - } - else { - _this.checkModifyInsertValues(Table, _this.Query.Values); - //remove values - _this.Query.Values = undefined; - } - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - return Insert; - }(Business.InsertHelper)); - Business.Insert = Insert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var BulkInsert = /** @class */ (function (_super) { - __extends(BulkInsert, _super); - function BulkInsert(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.ValuesAffected = []; - _this.ValuesIndex = 0; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected); - }; - _this.bulkinsertData = function () { - var That = this; - this.Transaction = Business.DbConnection.transaction([this.Query.Into], "readwrite"); - this.ObjectStore = this.Transaction.objectStore(this.Query.Into); - this.Transaction.oncomplete = function (e) { - That.OnSuccess(); - }; - this.Query.Values.forEach(function (value) { - That.ObjectStore.add(value); - }); - }; - try { - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - var That = _this; - _this.Table = _this.getTable(query.Into); - if (_this.Table) { - _this.bulkinsertData(); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: query.Into }); - JsStore.throwError(Error); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.Into }); - } - return _this; - } - return BulkInsert; - }(Business.Base)); - Business.BulkInsert = BulkInsert; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var OpenDb = /** @class */ (function () { - function OpenDb(dbVersion, onSuccess, onError) { - if (Business.ActiveDataBase.Name.length > 0) { - var DbRequest = indexedDB.open(Business.ActiveDataBase.Name, dbVersion), That = this; - DbRequest.onerror = function (event) { - if (onError != null) { - onError(event.target.error); - } - }; - DbRequest.onsuccess = function (event) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - Business.DbConnection = DbRequest.result; - Business.DbConnection.onclose = function () { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Closed, trying to reconnect"; - }; - Business.DbConnection.onversionchange = function (e) { - if (e.newVersion === null) { - e.target.close(); // Manually close our connection to the db - } - }; - Business.DbConnection.onerror = function (e) { - JsStore.Status.LastError = "Error occured in connection :" + e.target.result; - }; - Business.DbConnection.onabort = function (e) { - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Closed; - JsStore.Status.LastError = "Connection Aborted"; - }; - if (onSuccess != null) { - onSuccess(); - } - }; - } - else { - var Error = "Database name is not supplied."; - JsStore.throwError(Error); - } - } - return OpenDb; - }()); - Business.OpenDb = OpenDb; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Clear = /** @class */ (function (_super) { - __extends(Clear, _super); - function Clear(tableName, onSuccess, onError) { - var _this = _super.call(this) || this; - var That = _this, ObjectStore = Business.DbConnection.transaction([tableName], "readwrite").objectStore(tableName), ClearRequest = ObjectStore.clear(); - ClearRequest.onsuccess = function (e) { - var CurrentTable = That.getTable(tableName); - CurrentTable.Columns.forEach(function (column) { - if (column.AutoIncrement) { - KeyStore.set("JsStore_" + Business.ActiveDataBase.Name + "_" + tableName + "_" + column.Name + "_Value", 0); - } - }); - if (onSuccess != null) { - onSuccess(); - } - }; - ClearRequest.onerror = function (e) { - if (onError != null) { - onError(); - } - }; - return _this; - } - return Clear; - }(Business.Base)); - Business.Clear = Clear; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Main = /** @class */ (function () { - function Main(onSuccess) { - if (onSuccess === void 0) { onSuccess = null; } - this.checkConnectionAndExecuteLogic = function (request) { - JsStore.log('checking connection and executing request:' + request.Name); - switch (request.Name) { - case 'create_db': - case 'open_db': - this.executeLogic(request); - break; - case 'change_log_status': - this.changeLogStatus(request); - default: - switch (JsStore.Status.ConStatus) { - case JsStore.ConnectionStatus.Connected: - { - this.executeLogic(request); - } - ; - break; - case JsStore.ConnectionStatus.Closed: - { - var That = this; - this.openDb(Business.ActiveDataBase.Name, function () { - That.checkConnectionAndExecuteLogic(request); - }); - } - ; - break; - } - } - }; - this.changeLogStatus = function (request) { - if (request.Query['logging'] === true) { - JsStore.EnableLog = true; - } - else { - JsStore.EnableLog = false; - } - }; - this.returnResult = function (result) { - if (this.OnSuccess) { - this.OnSuccess(result); - } - else { - self.postMessage(result); - } - }; - this.executeLogic = function (request) { - var That = this, OnSuccess = function (results) { - That.returnResult({ - ReturnedValue: results - }); - }, OnError = function (err) { - That.returnResult({ - ErrorOccured: true, - ErrorDetails: err - }); - }; - switch (request.Name) { - case 'select': - this.select(request.Query, OnSuccess, OnError); - break; - case 'insert': - this.insert(request.Query, OnSuccess, OnError); - break; - case 'update': - this.update(request.Query, OnSuccess, OnError); - break; - case 'delete': - this.delete(request.Query, OnSuccess, OnError); - break; - case 'open_db': - this.openDb(request.Query, OnSuccess, OnError); - break; - case 'create_db': - this.createDb(request.Query, OnSuccess, OnError); - break; - case 'clear': - this.clear(request.Query, OnSuccess, OnError); - break; - case 'drop_db': - this.dropDb(OnSuccess, OnError); - break; - case 'count': - this.count(request.Query, OnSuccess, OnError); - break; - case 'bulk_insert': - this.bulkInsert(request.Query, OnSuccess, OnError); - break; - case 'export_json': - this.exportJson(request.Query, OnSuccess, OnError); - break; - default: console.error('The Api:-' + request.Name + 'does not support'); - } - }; - this.openDb = function (dbName, onSuccess, onError) { - KeyStore.get("JsStore_" + dbName + '_Db_Version', function (dbVersion) { - if (dbVersion != null) { - KeyStore.get("JsStore_" + dbName + "_Schema", function (result) { - Business.ActiveDataBase = result; - new Business.OpenDb(dbVersion, onSuccess, onError); - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.DbNotExist, { DbName: dbName }); - throw Error; - } - }); - }; - this.closeDb = function () { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - Business.DbConnection.close(); - } - }; - this.dropDb = function (onSuccess, onError) { - new Business.DropDb(Business.ActiveDataBase.Name, onSuccess, onError); - }; - this.update = function (query, onSuccess, onError) { - new Business.Update.Instance(query, onSuccess, onError); - }; - this.insert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.Insert(query, onSuccess, onError); - } - }; - this.bulkInsert = function (query, onSuccess, onError) { - if (!Array.isArray(query.Values)) { - JsStore.throwError("Value should be array :- supplied value is not array"); - } - else { - new Business.BulkInsert(query, onSuccess, onError); - } - }; - this.delete = function (query, onSuccess, onError) { - new Business.Delete.Instance(query, onSuccess, onError); - }; - this.select = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Select.Instance(query, onSuccess, onError); - } - }; - this.count = function (query, onSuccess, onError) { - if (typeof query.From === 'object') { - query['Count'] = true; - new Business.Select.Join(query, onSuccess, onError); - } - else { - new Business.Count.Instance(query, onSuccess, onError); - } - }; - this.createDb = function (dataBase, onSuccess, onError) { - var That = this; - KeyStore.get("JsStore_" + dataBase.Name + "_Db_Version", function (version) { - JsStore.DbVersion = version; - Business.ActiveDataBase = new JsStore.Model.DataBase(dataBase); - var createDbInternal = function () { - setTimeout(function () { - var LastTable = Business.ActiveDataBase.Tables[Business.ActiveDataBase.Tables.length - 1]; - KeyStore.get("JsStore_" + Business.ActiveDataBase.Name + "_" + LastTable.Name + "_Version", function (version) { - if (version == LastTable.Version) { - new Business.CreateDb(JsStore.DbVersion, onSuccess, onError); - } - else { - createDbInternal(); - } - }); - }, 200); - }; - createDbInternal(); - }); - }; - this.clear = function (tableName, onSuccess, onError) { - new Business.Clear(tableName, onSuccess, onError); - }; - this.exportJson = function (query, onSuccess, onError) { - this.select(query, function (results) { - var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], { - type: "text/json" - })); - onSuccess(Url); - }, function (err) { - onError(err); - }); - }; - this.OnSuccess = onSuccess; - } - return Main; - }()); - Business.Main = Main; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var BaseSelect = /** @class */ (function (_super) { - __extends(BaseSelect, _super); - function BaseSelect() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Results = []; - _this.Sorted = false; - _this.CheckFlag = false; - _this.removeDuplicates = function () { - var Datas = this.Results; - //free results memory - this.Results = undefined; - var Key = this.getPrimaryKey(this.Query.From); - var lookupObject = {}; - for (var i in Datas) { - lookupObject[Datas[i][Key]] = Datas[i]; - } - //free datas memory - Datas = []; - for (i in lookupObject) { - Datas.push(lookupObject[i]); - } - this.Results = Datas; - }; - return _this; - } - return BaseSelect; - }(Business.Base)); - Select.BaseSelect = BaseSelect; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest, executeSkipAndLimit = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSkip = function () { - var RecordSkipped = false; - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - }, executeSimple = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }, executeLimit = function () { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - }; - if (this.Query.Order && this.Query.Order.By) { - if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) { - var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next'; - this.Sorted = true; - CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By }); - JsStore.throwError(Error); - } - } - else { - CursorOpenRequest = this.ObjectStore.openCursor(); - } - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Select.BaseSelect)); - Select.NotWhere = NotWhere; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeSkipAndLimitForIn = function (column, values) { - var Cursor, Skip = this.SkipRecord, That = this, ColumnStore = this.ObjectStore.index(column), skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - skipOrPush(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeSkipForIn = function (column, values) { - var Cursor, Skip = this.SkipRecord, That = this, ColumnStore = this.ObjectStore.index(column), skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - skipOrPush((Cursor.value)); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeLimitForIn = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column); - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeSimpleForIn = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column); - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - }; - _this.executeInLogic = function (column, values) { - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimitForIn(column, values); - } - else if (this.SkipRecord) { - this.executeSkipForIn(column, values); - } - else if (this.LimitRecord) { - this.executeLimitForIn(column, values); - } - else { - this.executeSimpleForIn(column, values); - } - }; - return _this; - } - return In; - }(Select.NotWhere)); - Select.In = In; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false; - value = value.toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeSkipAndLimit = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.key) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.key)) { - skipOrPush(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSkip = function () { - var Cursor, Skip = this.SkipRecord, That = this, skipOrPush = function (value) { - if (Skip == 0) { - That.Results.push(value); - } - else { - --Skip; - } - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.key) && - That.checkForWhereConditionMatch(Cursor.value)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.key)) { - skipOrPush((Cursor.value)); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLimit = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.key) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (That.Results.length != That.LimitRecord && Cursor) { - if (That.filterOnOccurence(Cursor.key)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeSimple = function () { - var Cursor, That = this; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.key) && - That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.key)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - this.executeSkipAndLimit(); - } - else if (this.SkipRecord) { - this.executeSkip(); - } - else if (this.LimitRecord) { - this.executeLimit(); - } - else { - this.executeSimple(); - } - }; - return _this; - } - return Like; - }(Select.In)); - Select.Like = Like; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this, CursorOpenRequest, Cursor, executeSkipAndLimit = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeSkip = function () { - var RecordSkipped = false; - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (RecordSkipped) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - else { - RecordSkipped = true; - Cursor.advance(That.SkipRecord); - } - } - }; - } - }, executeLimit = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor && That.Results.length != That.LimitRecord) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }, executeSimple = function () { - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - That.Results.push(Cursor.value); - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - That.Results.push(Cursor.value); - Cursor.continue(); - } - }; - } - }; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (this.SkipRecord && this.LimitRecord) { - executeSkipAndLimit(); - } - else if (this.SkipRecord) { - executeSkip(); - } - else if (this.LimitRecord) { - executeLimit(); - } - else { - executeSimple(); - } - }; - return _this; - } - return Where; - }(Select.Like)); - Select.Where = Where; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Join = /** @class */ (function (_super) { - __extends(Join, _super); - function Join(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.QueryStack = []; - _this.CurrentQueryStackIndex = 0; - _this.onTransactionCompleted = function (e) { - if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) { - if (this.Query['Count']) { - this.OnSuccess(this.Results.length); - } - else { - if (this.Query['Skip'] && this.Query['Limit']) { - this.Results.splice(0, this.Query['Skip']); - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - else if (this.Query['Skip']) { - this.Results.splice(0, this.Query['Skip']); - } - else if (this.Query['Limit']) { - this.Results.splice(this.Query['Limit'] - 1, this.Results.length); - } - this.OnSuccess(this.Results); - } - } - }; - _this.executeWhereJoinLogic = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length; - //get the data from query table - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - //perform join - results.forEach(function (value, index) { - //search item through each global result - for (var i = 0; i < ResultLength; i++) { - Item = TmpResults[i][joinQuery.Table][joinQuery.Column]; - //if (Item == value[query.Column]) { - doJoin(Item, value, i); - //} - } - }); - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, function (error) { - That.onErrorOccured(error); - }); - var doJoin = function (value1, value2, itemIndex) { - Results[JoinIndex] = {}; - if (value1 == value2[query.Column]) { - Results[JoinIndex][query.Table] = value2; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }; - }; - _this.executeRightJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doRightJoin = function (results) { - var ValueFound = false; - results.forEach(function (item, index) { - for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) { - if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) { - ValueFound = true; - break; - } - } - Results[index] = {}; - Results[index][query.Table] = item; - if (ValueFound) { - ValueFound = false; - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - } - else { - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[index][That.QueryStack[j].Table] = null; - } - } - }); - }, executeLogic = function () { - new Select.Instance({ - From: query.Table, - Where: query.Where, - Order: query.Order - }, function (results) { - doRightJoin(results); - onExecutionFinished(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - }; - executeLogic(); - }; - _this.executeWhereUndefinedLogicForJoin = function (joinQuery, query) { - var That = this, Results = [], JoinIndex = 0, Column = query.Column, TmpResults = That.Results, Item, ResultLength = TmpResults.length, ItemIndex = 0, Where = {}, onExecutionFinished = function () { - That.Results = Results; - //check if further execution needed - if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) { - That.startExecutionJoinLogic(); - } - else { - That.onTransactionCompleted(null); - } - }, doJoin = function (results) { - if (results.length > 0) { - results.forEach(function (value) { - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = value; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - ++JoinIndex; - }); - } - else if (query.JoinType == 'left') { - //left join - Results[JoinIndex] = {}; - Results[JoinIndex][query.Table] = null; - //copy other relative data into current result - for (var j = 0; j < That.CurrentQueryStackIndex; j++) { - Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table]; - } - //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table]; - ++JoinIndex; - } - }, executeLogic = function () { - if (ItemIndex < ResultLength) { - if (!That.ErrorOccured) { - Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]; - new Select.Instance({ - From: query.Table, - Where: Where, - Order: query.Order - }, function (results) { - doJoin(results); - ++ItemIndex; - executeLogic(); - }, function (error) { - That.ErrorOccured = true; - That.onErrorOccured(error); - }); - } - } - else { - onExecutionFinished(); - } - }; - executeLogic(); - }; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Query = query; - var That = _this, TableList = []; // used to open the multiple object store - var convertQueryIntoStack = function (query) { - if (query.hasOwnProperty('Table1')) { - query.Table2['JoinType'] = query.Join == undefined ? 'inner' : query.Join.toLowerCase(); - That.QueryStack.push(query.Table2); - if (That.QueryStack.length % 2 == 0) { - That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin; - } - TableList.push(query.Table2.Table); - return convertQueryIntoStack(query.Table1); - } - else { - That.QueryStack.push(query); - TableList.push(query.Table); - return; - } - }; - convertQueryIntoStack(query.From); - _this.QueryStack.reverse(); - //get the data for first table - if (!_this.ErrorOccured) { - new Select.Instance({ - From: _this.QueryStack[0].Table, - Where: _this.QueryStack[0].Where - }, function (results) { - var TableName = That.QueryStack[0].Table; - results.forEach(function (item, index) { - That.Results[index] = {}; - That.Results[index][TableName] = item; - }); - That.startExecutionJoinLogic(); - }, function (error) { - That.onErrorOccured(error); - }); - } - return _this; - } - Join.prototype.startExecutionJoinLogic = function () { - var JoinQuery; - if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) { - JoinQuery = { - Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table, - Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column - }; - this.CurrentQueryStackIndex++; - } - else { - JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++]; - } - var Query = this.QueryStack[this.CurrentQueryStackIndex]; - if (Query.JoinType == 'right') { - this.executeRightJoin(JoinQuery, Query); - } - else if (Query.Where) { - this.executeWhereJoinLogic(JoinQuery, Query); - } - else { - this.executeWhereUndefinedLogicForJoin(JoinQuery, Query); - } - }; - return Join; - }(Select.BaseSelect)); - Select.Join = Join; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var GroupByHelper = /** @class */ (function (_super) { - __extends(GroupByHelper, _super); - function GroupByHelper() { - var _this = _super.call(this) || this; - _this.executeAggregateGroupBy = function () { - var GrpQry = this.Query.GroupBy, Datas = this.Results, LookUpObj = {}; - //free results memory - this.Results = undefined; - //assign aggregate and free aggregate memory - var AggregateQry = this.Query.Aggregate; - this.Query.Aggregate = undefined; - var Index, ObjKey, Value, AggrColumn; - var calculateAggregate = function () { - for (var prop in AggregateQry) { - switch (prop) { - case 'Count': - var getCount = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Count(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? 1 : 0; - return Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Count(" + AggrColumn + ")"] = getCount(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Count(" + AggrColumn + ")"] = getCount(); - } - } - break; - case 'Max': - var getMax = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Max(" + AggrColumn + ")"] : 0; - Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - //compare between old value and new value - return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn]; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Max(" + AggrColumn + ")"] = getMax(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Max(" + AggrColumn + ")"] = getMax(); - } - } - break; - case 'Min': - var getMin = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Min(" + AggrColumn + ")"] : Infinity; - Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity; - //compare between old value and new value - return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn]; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Min(" + AggrColumn + ")"] = getMin(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Min(" + AggrColumn + ")"] = getMin(); - } - } - break; - case 'Sum': - var getSum = function () { - Value = LookUpObj[ObjKey]; - //get old value - Value = Value ? Value["Sum(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - return Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - Datas[Index]["Sum(" + AggrColumn + ")"] = getSum(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - Datas[Index]["Sum(" + AggrColumn + ")"] = getSum(); - } - } - break; - case 'Avg': - var getAvg = function () { - Value = LookUpObj[ObjKey]; - //get old sum value - var Sum = Value ? Value["Sum(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0; - Datas[Index]["Sum(" + AggrColumn + ")"] = Sum; - //get old count value - Value = Value ? Value["Count(" + AggrColumn + ")"] : 0; - //add with old value if data exist - Value += Datas[Index][AggrColumn] ? 1 : 0; - Datas[Index]["Count(" + AggrColumn + ")"] = Value; - }; - if (typeof AggregateQry[prop] == 'string') { - AggrColumn = AggregateQry[prop]; - getAvg(); - } - else if (Array.isArray(AggregateQry[prop])) { - for (var item in AggregateQry[prop]) { - AggrColumn = AggregateQry[prop][item]; - getAvg(); - } - } - break; - } - } - }; - if (typeof GrpQry == 'string') { - for (Index in Datas) { - ObjKey = Datas[Index][GrpQry]; - calculateAggregate(); - LookUpObj[ObjKey] = Datas[Index]; - } - } - else { - for (Index in Datas) { - ObjKey = ""; - for (var column in GrpQry) { - ObjKey += Datas[Index][GrpQry[column]]; - } - calculateAggregate(); - LookUpObj[ObjKey] = Datas[Index]; - } - } - //free datas memory - Datas = []; - for (var i in LookUpObj) { - Datas.push(LookUpObj[i]); - } - //Checking for avg and if exist then fill the datas; - if (AggregateQry.Avg) { - if (typeof AggregateQry.Avg == 'string') { - for (Index in Datas) { - var Sum = Datas[Index]["Sum(" + AggregateQry.Avg + ")"], Count = Datas[Index]["Count(" + AggregateQry.Avg + ")"]; - Datas[Index]["Avg(" + AggregateQry.Avg + ")"] = Sum / Count; - if (AggregateQry.Count !== AggregateQry.Avg) { - delete Datas[Index]["Count(" + AggregateQry.Avg + ")"]; - } - if (AggregateQry.Sum !== AggregateQry.Avg) { - delete Datas[Index]["Sum(" + AggregateQry.Avg + ")"]; - } - } - } - else { - var IsCountTypeString = typeof AggregateQry.Count, IsSumTypeString = typeof AggregateQry.Count; - for (Index in Datas) { - for (var column in AggregateQry.Avg) { - var AvgColumn = AggregateQry.Avg[column], Sum = Datas[Index]["Sum(" + AvgColumn + ")"], Count = Datas[Index]["Count(" + AvgColumn + ")"]; - Datas[Index]["Avg(" + AvgColumn + ")"] = Sum / Count; - if (IsCountTypeString) { - if (AggregateQry.Count !== AvgColumn) { - delete Datas[Index]["Count(" + AvgColumn + ")"]; - } - else if (AggregateQry.Count.indexOf(AvgColumn) == -1) { - delete Datas[Index]["Count(" + AvgColumn + ")"]; - } - } - if (IsSumTypeString) { - if (AggregateQry.Sum !== AvgColumn) { - delete Datas[Index]["Sum(" + AvgColumn + ")"]; - } - else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) { - delete Datas[Index]["Sum(" + AvgColumn + ")"]; - } - } - } - } - } - } - this.Results = Datas; - }; - _this.processGroupBy = function () { - var GrpQry = this.Query.GroupBy, Datas = this.Results, LookUpObj = {}; - //free results memory - this.Results = this.Query.GroupBy = undefined; - if (typeof GrpQry == 'string') { - for (var i in Datas) { - LookUpObj[Datas[i][GrpQry]] = Datas[i]; - } - } - else { - var ObjKey; - for (var i in Datas) { - ObjKey = ""; - for (var column in GrpQry) { - ObjKey += Datas[i][GrpQry[column]]; - } - LookUpObj[ObjKey] = Datas[i]; - } - } - //free datas memory - Datas = []; - for (i in LookUpObj) { - Datas.push(LookUpObj[i]); - } - this.Results = Datas; - }; - return _this; - } - return GroupByHelper; - }(Select.Where)); - Select.GroupByHelper = GroupByHelper; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Helper = /** @class */ (function (_super) { - __extends(Helper, _super); - function Helper() { - var _this = _super.call(this) || this; - _this.processOrderBy = function () { - var Order = this.Query.Order; - if (Order && this.Results.length > 0 && !this.Sorted && Order.By) { - Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc'; - var That = this, OrderColumn = Order.By, sortNumberInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn] - b[OrderColumn]; - }); - }, sortNumberInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn] - a[OrderColumn]; - }); - }, sortAlphabetInAsc = function () { - That.Results.sort(function (a, b) { - return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase()); - }); - }, sortAlphabetInDesc = function () { - That.Results.sort(function (a, b) { - return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase()); - }); - }; - if (typeof this.Results[0][OrderColumn] == 'string') { - if (Order.Type == 'asc') { - sortAlphabetInAsc(); - } - else { - sortAlphabetInDesc(); - } - } - else if (typeof this.Results[0][OrderColumn] == 'number') { - if (Order.Type == 'asc') { - sortNumberInAsc(); - } - else { - sortNumberInDesc(); - } - } - } - }; - _this.processAggregateQry = function () { - var Datas = this.Results, Results = {}, Key; - //free results memory - this.Results = undefined; - for (var prop in this.Query.Aggregate) { - switch (prop) { - case 'Count': - var getCount = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key] ? 1 : 0; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Count(" + Key + ")"] = getCount(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Count(" + Key + ")"] = getCount(); - } - } - break; - case 'Max': - var getMax = function () { - var Result = 0; - for (var i in Datas) { - Result = Result > Datas[i][Key] ? Result : Datas[i][Key]; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Max(" + Key + ")"] = getMax(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Max(" + Key + ")"] = getMax(); - } - } - break; - case 'Min': - var getMin = function () { - var Result = Infinity, Value = Infinity; - for (var i in Datas) { - Value = Datas[i][Key] ? Datas[i][Key] : Infinity; - Result = Result < Value ? Result : Value; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Min(" + Key + ")"] = getMin(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Min(" + Key + ")"] = getMin(); - } - } - break; - case 'Sum': - var getSum = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key]; - } - ; - return Result; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Sum(" + Key + ")"] = getSum(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Sum(" + Key + ")"] = getSum(); - } - } - break; - case 'Avg': - var getAvg = function () { - var Result = 0; - for (var i in Datas) { - Result += Datas[i][Key]; - } - ; - return Result / Datas.length; - }; - if (typeof this.Query.Aggregate[prop] == 'string') { - Key = this.Query.Aggregate[prop]; - Results["Avg(" + Key + ")"] = getAvg(); - } - else if (Array.isArray(this.Query.Aggregate[prop])) { - for (var key in this.Query.Aggregate[prop]) { - Key = this.Query.Aggregate[prop][key]; - Results["Avg(" + Key + ")"] = getAvg(); - } - } - break; - } - } - //add results to the first index of result - for (var prop in Results) { - Datas[0][prop] = Results[prop]; - } - this.Results = Datas; - }; - return _this; - } - return Helper; - }(Select.GroupByHelper)); - Select.Helper = Helper; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Select; - (function (Select) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.processOrderBy(); - if (this.Query.GroupBy) { - if (this.Query.Aggregate) { - this.executeAggregateGroupBy(); - } - else { - this.processGroupBy(); - } - } - else if (this.Query.Aggregate) { - this.processAggregateQry(); - } - this.OnSuccess(this.Results); - } - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.orQuerySuccess = function () { - this.Results = this.OrInfo.Results; - //free var memory - this.OrInfo.Results = undefined; - this.removeDuplicates(); - this.OrInfo.OnSucess(this.Results); - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess, - Results: [] - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - this.OrInfo.Results = this.OrInfo.Results.concat(this.Results); - if (!this.Query.Limit || (this.Query.Limit > this.OrInfo.Results.length)) { - this.Results = []; - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.orQuerySuccess(); - } - } - else { - this.orQuerySuccess(); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.SkipRecord = _this.Query.Skip; - _this.LimitRecord = _this.Query.Limit; - try { - _this.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - _this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - _this.Transaction.ontimeout = That.onTransactionCompleted; - _this.ObjectStore = _this.Transaction.objectStore(query.From); - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Select.Helper)); - Select.Instance = Instance; - })(Select = Business.Select || (Business.Select = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var BaseCount = /** @class */ (function (_super) { - __extends(BaseCount, _super); - function BaseCount() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.ResultCount = 0; - _this.CheckFlag = false; - return _this; - } - return BaseCount; - }(Business.Base)); - Count.BaseCount = BaseCount; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var That = this; - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.count(); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - }; - return _this; - } - return NotWhere; - }(Count.BaseCount)); - Count.NotWhere = NotWhere; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column), CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - if (this.ObjectStore.count) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.count(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - That.ResultCount += e.target.result; - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Count.NotWhere)); - Count.In = In; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false; - value = value.toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.key) && - That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.key)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Count.In)); - Count.Like = Like; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var That = this; - value = op ? value[op] : value; - if (That.CheckFlag) { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - ++That.ResultCount; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - if (this.ObjectStore.count) { - var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op)); - CountRequest.onsuccess = function () { - That.ResultCount = CountRequest.result; - }; - CountRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - else { - var Cursor, CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - ++That.ResultCount; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - }; - return _this; - } - return Where; - }(Count.Like)); - Count.Where = Where; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Count; - (function (Count) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - if (this.SendResultFlag) { - this.OnSuccess(this.ResultCount); - } - }; - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - try { - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.From], "readonly"); - That.ObjectStore = That.Transaction.objectStore(query.From); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where != undefined) { - if (query.Where.Or) { - new Business.Select.Instance(query, function (results) { - That.ResultCount = results.length; - That.onTransactionCompleted(); - }, _this.OnError); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Count.Where)); - Count.Instance = Instance; - })(Count = Business.Count || (Business.Count = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - Update.updateValue = function (suppliedValue, storedValue) { - for (var key in suppliedValue) { - if (typeof suppliedValue[key] != 'object') { - storedValue[key] = suppliedValue[key]; - } - else { - for (var op in suppliedValue[key]) { - switch (op) { - case '+': - storedValue[key] += suppliedValue[key][op]; - break; - case '-': - storedValue[key] -= suppliedValue[key][op]; - break; - case '*': - storedValue[key] *= suppliedValue[key][op]; - break; - case '/': - storedValue[key] /= suppliedValue[key][op]; - break; - default: storedValue[key] = suppliedValue[key]; - } - break; - } - } - } - return storedValue; - }; - })(Update = Business.Update || (Business.Update = {})); - var BaseUpdate = /** @class */ (function (_super) { - __extends(BaseUpdate, _super); - function BaseUpdate() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseUpdate; - }(Business.Base)); - Business.BaseUpdate = BaseUpdate; - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Business.BaseUpdate)); - Update.NotWhere = NotWhere; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column), CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Update.NotWhere)); - Update.In = In; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false; - value = value.toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var Cursor, That = this; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.key) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.key)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Update.In)); - Update.Like = Like; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.update(Update.updateValue(That.Query.Set, Cursor.value)); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Update.Like)); - Update.Where = Where; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Update; - (function (Update) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.In); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - var That = this; - new Business.Select.Instance({ - From: this.Query.In, - Where: this.Query.Where - }, function (results) { - var Key = That.getPrimaryKey(That.Query.In), InQuery = [], WhereQry = {}; - results.forEach(function (value) { - InQuery.push(value[Key]); - }); - WhereQry[Key] = { In: InQuery }; - That.createtransactionForOrLogic({ - In: That.Query.In, - Where: WhereQry, - Set: That.Query.Set - }); - }, this.OnError); - }; - try { - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.checkSchema(query.Set, query.In); - if (!_this.ErrorOccured) { - _this.Query = query; - var That = _this; - var createTransaction = function () { - That.Transaction = Business.DbConnection.transaction([query.In], "readwrite"); - That.ObjectStore = That.Transaction.objectStore(query.In); - That.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - That.Transaction.ontimeout = That.onTransactionTimeout; - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - else { - createTransaction(); - _this.goToWhereLogic(); - } - } - else { - createTransaction(); - _this.executeWhereUndefinedLogic(); - } - } - else { - _this.onErrorOccured(_this.Error, true); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.In }); - } - return _this; - } - Instance.prototype.checkSchema = function (suppliedValue, tableName) { - if (suppliedValue) { - var CurrentTable = this.getTable(tableName), That = this; - if (CurrentTable) { - var onValidationError = function (error, details) { - That.ErrorOccured = true; - That.Error = JsStore.Utils.getError(error, details); - }; - //loop through table column and find data is valid - CurrentTable.Columns.every(function (column) { - if (!That.ErrorOccured) { - if (column.Name in suppliedValue) { - var executeCheck = function (value) { - //check not null schema - if (column.NotNull && JsStore.isNull(value)) { - onValidationError(JsStore.ErrorType.NullValue, { ColumnName: column.Name }); - } - //check datatype - if (column.DataType) { - var Type = typeof value; - if (Type != column.DataType) { - if (Type != 'object') { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - else { - var AllowedProp = ['+', '-', '*', '/']; - for (var prop in value) { - if (AllowedProp.indexOf(prop) < 0) { - onValidationError(JsStore.ErrorType.BadDataType, { ColumnName: column.Name }); - } - break; - } - } - } - } - }; - executeCheck(suppliedValue[column.Name]); - } - return true; - } - else { - return false; - } - }); - } - else { - var Error = JsStore.Utils.getError(JsStore.ErrorType.TableNotExist, { TableName: tableName }); - JsStore.throwError(Error); - } - } - else { - this.ErrorOccured = true; - //execute onSuccess with supplying 0 as rows affected - this.OnSuccess(0); - } - }; - return Instance; - }(Update.Where)); - Update.Instance = Instance; - })(Update = Business.Update || (Business.Update = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var BaseDelete = /** @class */ (function (_super) { - __extends(BaseDelete, _super); - function BaseDelete() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.CheckFlag = false; - return _this; - } - return BaseDelete; - }(Business.Base)); - Delete.BaseDelete = BaseDelete; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var NotWhere = /** @class */ (function (_super) { - __extends(NotWhere, _super); - function NotWhere() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereUndefinedLogic = function () { - var Cursor, That = this, CursorOpenRequest = this.ObjectStore.openCursor(); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return NotWhere; - }(Delete.BaseDelete)); - Delete.NotWhere = NotWhere; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var In = /** @class */ (function (_super) { - __extends(In, _super); - function In() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeInLogic = function (column, values) { - var Cursor, That = this, ColumnStore = this.ObjectStore.index(column), CursorOpenRequest; - if (That.CheckFlag) { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - else { - for (var i = 0, length = values.length; i < length; i++) { - if (!That.ErrorOccured) { - CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i])); - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - } - } - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return In; - }(Delete.NotWhere)); - Delete.In = In; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Like = /** @class */ (function (_super) { - __extends(Like, _super); - function Like() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.filterOnOccurence = function (value) { - var Found = false; - value = value.toLowerCase(); - switch (this.CompSymbol) { - case JsStore.Occurence.Any: - if (value.indexOf(this.CompValue) >= 0) { - Found = true; - } - ; - break; - case JsStore.Occurence.First: - if (value.indexOf(this.CompValue) == 0) { - Found = true; - } - ; - break; - default: - if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) { - Found = true; - } - ; - } - return Found; - }; - _this.executeLikeLogic = function (column, value, symbol) { - var That = this, Cursor; - this.CompValue = value.toLowerCase(); - this.CompValueLength = this.CompValue.length; - this.CompSymbol = symbol; - this.Column = column; - this.CursorOpenRequest = this.ObjectStore.index(column).openCursor(); - this.CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - if (That.CheckFlag) { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.key) && - That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - this.CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.filterOnOccurence(Cursor.key)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - }; - return _this; - } - return Like; - }(Delete.In)); - Delete.Like = Like; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Where = /** @class */ (function (_super) { - __extends(Where, _super); - function Where() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.executeWhereLogic = function (column, value, op) { - var Cursor, That = this, CursorOpenRequest; - value = op ? value[op] : value; - CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op)); - if (That.CheckFlag) { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - if (That.checkForWhereConditionMatch(Cursor.value)) { - Cursor.delete(); - ++That.RowAffected; - } - Cursor.continue(); - } - }; - } - else { - CursorOpenRequest.onsuccess = function (e) { - Cursor = e.target.result; - if (Cursor) { - Cursor.delete(); - ++That.RowAffected; - Cursor.continue(); - } - }; - } - CursorOpenRequest.onerror = function (e) { - That.ErrorOccured = true; - That.onErrorOccured(e); - }; - }; - return _this; - } - return Where; - }(Delete.Like)); - Delete.Where = Where; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - var Business; - (function (Business) { - var Delete; - (function (Delete) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(query, onSuccess, onError) { - var _this = _super.call(this) || this; - _this.onTransactionCompleted = function () { - this.OnSuccess(this.RowAffected); - }; - _this.createtransactionForOrLogic = function (query) { - var That = this; - this.Query = query; - try { - this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - this.Transaction.oncomplete = function (e) { - That.onTransactionCompleted(); - }; - this.Transaction.ontimeout = That.onTransactionCompleted; - this.ObjectStore = this.Transaction.objectStore(query.From); - this.goToWhereLogic(); - } - catch (ex) { - this.onExceptionOccured(ex, { TableName: query.From }); - } - }; - _this.executeOrLogic = function () { - this.OrInfo = { - OrQuery: this.Query.Where.Or, - OnSucess: this.OnSuccess - }; - this.TmpQry = { - From: this.Query.From, - Where: {} - }; - var onSuccess = function () { - var Key = JsStore.getObjectFirstKey(this.OrInfo.OrQuery); - if (Key != null) { - this.TmpQry['Where'][Key] = this.OrInfo.OrQuery[Key]; - delete this.OrInfo.OrQuery[Key]; - this.createtransactionForOrLogic(this.TmpQry); - } - else { - this.OrInfo.OnSucess(this.RowAffected); - } - }; - //free or memory - this.Query.Where.Or = undefined; - this.OnSuccess = onSuccess; - }; - try { - var That = _this; - _this.Query = query; - _this.OnSuccess = onSuccess; - _this.OnError = onError; - _this.Transaction = Business.DbConnection.transaction([query.From], "readwrite"); - _this.ObjectStore = _this.Transaction.objectStore(query.From); - _this.Transaction.oncomplete = function () { - That.onTransactionCompleted(); - }; - _this.Transaction.onerror = function (e) { - That.onErrorOccured(e); - }; - if (query.Where) { - if (query.Where.Or) { - _this.executeOrLogic(); - } - _this.goToWhereLogic(); - } - else { - _this.executeWhereUndefinedLogic(); - } - } - catch (ex) { - _this.onExceptionOccured(ex, { TableName: query.From }); - } - return _this; - } - return Instance; - }(Delete.Where)); - Delete.Instance = Instance; - })(Delete = Business.Delete || (Business.Delete = {})); - })(Business = JsStore.Business || (JsStore.Business = {})); -})(JsStore || (JsStore = {})); -var JsStore; -(function (JsStore) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.NotStarted; - var CodeExecutionHelper = /** @class */ (function () { - function CodeExecutionHelper() { - this.RequestQueue = []; - this.IsCodeExecuting = false; - this.pushApi = function (request, usePromise) { - if (usePromise === true) { - var That = this; - return new Promise(function (resolve, reject) { - request.OnSuccess = function (result) { - resolve(result); - }; - request.OnError = function (error) { - reject(error); - }; - That.prcoessExecutionOfCode(request); - }); - } - else { - this.prcoessExecutionOfCode(request); - return this; - } - }; - this.prcoessExecutionOfCode = function (request) { - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - switch (request.Name) { - case 'create_db': - case 'open_db': - this.RequestQueue.splice(0, 0, request); - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - ; - JsStore.Status.ConStatus = JsStore.ConnectionStatus.Connected; - break; - default: this.RequestQueue.push(request); - } - } - else { - this.RequestQueue.push(request); - if (this.RequestQueue.length == 1 && JsStore.WorkerStatus != JsStore.WebWorkerStatus.NotStarted) { - this.executeCode(); - } - } - JsStore.log("request pushed: " + request.Name); - }; - this.executeCode = function () { - if (!this.IsCodeExecuting && this.RequestQueue.length > 0) { - this.IsCodeExecuting = true; - var FirstRequest = this.RequestQueue[0], Request = { - Name: FirstRequest.Name, - Query: FirstRequest.Query - }; - JsStore.log("request executing : " + FirstRequest.Name); - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - this.executeCodeUsingWorker(Request); - } - else { - this.executeCodeDirect(Request); - } - } - }; - this.executeCodeDirect = function (request) { - var That = this; - new JsStore.Business.Main(function (results) { - That.processFinishedRequest(results); - }).checkConnectionAndExecuteLogic(request); - }; - this.executeCodeUsingWorker = function (request) { - JsStore.WorkerInstance.postMessage(request); - }; - this.processFinishedRequest = function (message) { - var FinishedRequest = this.RequestQueue.shift(); - this.IsCodeExecuting = false; - if (FinishedRequest) { - JsStore.log("request finished : " + FinishedRequest.Name); - if (message.ErrorOccured) { - if (FinishedRequest.OnError) { - FinishedRequest.OnError(message.ErrorDetails); - } - } - else { - if (FinishedRequest.OnSuccess) { - if (message.ReturnedValue != null) { - FinishedRequest.OnSuccess(message.ReturnedValue); - } - else { - FinishedRequest.OnSuccess(); - } - } - } - this.executeCode(); - } - }; - this.onWorkerFailed = function () { - console.warn('JsStore is not runing in web worker'); - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Failed; - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.NotStarted) { - this.executeCode(); - } - }; - this.createWorker = function () { - var That = this; - try { - if (Worker) { - var ScriptUrl = this.getScriptUrl(); - if (ScriptUrl && ScriptUrl.length > 0) { - JsStore.WorkerInstance = new Worker(ScriptUrl); - JsStore.WorkerInstance.onmessage = function (msg) { - That.onMessageFromWorker(msg); - }; - That.executeCodeUsingWorker({ - Name: 'change_log_status', - Query: { - logging: JsStore.EnableLog - } - }); - setTimeout(function () { - if (JsStore.WorkerStatus != JsStore.WebWorkerStatus.Failed) { - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - } - if (JsStore.Status.ConStatus == JsStore.ConnectionStatus.Connected) { - That.executeCode(); - } - }, 100); - } - else { - That.onWorkerFailed(); - } - } - else { - That.onWorkerFailed(); - } - } - catch (ex) { - That.onWorkerFailed(); - } - }; - this.onMessageFromWorker = function (msg) { - var That = this; - if (typeof msg.data == 'string') { - var Datas = msg.data.split(':')[1]; - switch (Datas) { - case 'WorkerFailed': - That.onWorkerFailed(); - break; - } - } - else { - this.processFinishedRequest(msg.data); - } - }; - } - CodeExecutionHelper.prototype.getScriptUrl = function (fileName) { - var ScriptUrl = ""; - var FileName = fileName ? fileName.toLowerCase() : "jsstore"; - var Scripts = document.getElementsByTagName('script'); - for (var i = Scripts.length - 1, url = ""; i >= 0; i--) { - url = Scripts[i].src; - url = url.substring(url.lastIndexOf('/') + 1).toLowerCase(); - if (url.length > 0 && url.indexOf(FileName) >= 0) { - ScriptUrl = Scripts[i].src; - return ScriptUrl; - } - } - return ScriptUrl; - }; - return CodeExecutionHelper; - }()); - JsStore.CodeExecutionHelper = CodeExecutionHelper; -})(JsStore || (JsStore = {})); -var Model = JsStore.Model; -var DataBase = Model.DataBase; -var Column = Model.Column; -var Table = Model.Table; -var JsStore; -(function (JsStore) { - var Instance = /** @class */ (function (_super) { - __extends(Instance, _super); - function Instance(dbName) { - if (dbName === void 0) { dbName = null; } - var _this = _super.call(this) || this; - /** - * open database - * - * @param {string} dbName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.openDb = function (dbName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - return this.pushApi({ - Name: 'open_db', - Query: dbName, - OnSuccess: onSuccess, - OnError: onError, - }, false); - }; - /** - * creates DataBase - * - * @param {Model.IDataBase} dataBase - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.createDb = function (dataBase, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - return this.pushApi({ - Name: 'create_db', - OnSuccess: onSuccess, - OnError: onError, - Query: dataBase - }, false); - }; - /** - * drop dataBase - * - * @param {Function} onSuccess - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.dropDb = function (onSuccess, onError) { - if (onError === void 0) { onError = null; } - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'drop_db', - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * select data from table - * - * @param {IQuery} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * - * @memberOf Main - */ - _this.select = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'select', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * get no of result from table - * - * @param {ICount} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.count = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'count', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * insert data into table - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.insert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'insert', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * update data into table - * - * @param {IUpdate} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.update = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'update', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * delete data from table - * - * @param {IDelete} query - * @param {Function} [onSuccess=null] - * @param {Function} onError - * @memberof Instance - */ - _this.delete = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - query.OnSuccess = query.OnError = null; - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'delete', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * delete all data from table - * - * @param {string} tableName - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @memberof Instance - */ - _this.clear = function (tableName, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - var UsePromise = onSuccess ? false : true; - return this.pushApi({ - Name: 'clear', - Query: tableName, - OnSuccess: onSuccess, - OnError: onerror - }, UsePromise); - }; - /** - * insert bulk amount of data - * - * @param {IInsert} query - * @param {Function} [onSuccess=null] - * @param {Function} [onError=null] - * @returns - * @memberof Instance - */ - _this.bulkInsert = function (query, onSuccess, onError) { - if (onSuccess === void 0) { onSuccess = null; } - if (onError === void 0) { onError = null; } - onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess; - onError = query.OnError ? query.OnError : onError; - var UsePromise = onSuccess ? false : true; - query.OnSuccess = query.OnError = null; - return this.pushApi({ - Name: 'bulk_insert', - Query: query, - OnSuccess: onSuccess, - OnError: onError - }, UsePromise); - }; - /** - * export the result in json file - * - * @param {ISelect} qry - * @memberof Instance - */ - _this.exportJson = function (query) { - var OnSuccess = function (url) { - var Link = document.createElement("a"); - Link.href = url; - Link.download = query.From + ".json"; - Link.click(); - if (OnSuccessCallBack) { - OnSuccessCallBack(); - } - }, OnError = query['OnError'], OnSuccessCallBack = query['OnSuccess']; - query['OnSuccess'] = query['OnError'] = undefined; - var UsePromise = OnSuccessCallBack ? false : true; - if (UsePromise) { - return new Promise(function (resolve, reject) { - this.pushApi({ - Name: 'export_json', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }, UsePromise).then(function (url) { - OnSuccess(url); - resolve(); - }).catch(function (err) { - reject(err); - }); - }); - } - else { - this.pushApi({ - Name: 'export_json', - Query: query, - OnSuccess: OnSuccess, - OnError: OnError - }, UsePromise); - } - }; - if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.Registered) { - JsStore.WorkerInstance.terminate(); - } - else if (JsStore.WorkerStatus == JsStore.WebWorkerStatus.NotStarted) { - KeyStore.init(); - } - _this.createWorker(); - if (dbName) { - _this.openDb(dbName); - } - return _this; - } - return Instance; - }(JsStore.CodeExecutionHelper)); - JsStore.Instance = Instance; -})(JsStore || (JsStore = {})); -if (self && !self.alert) { - self.onmessage = function (e) { - JsStore.log("Request executing from WebWorker, request name: " + e.data.Name); - var Request = e.data, BusinessMain = new JsStore.Business.Main(); - BusinessMain.checkConnectionAndExecuteLogic(Request); - }; - JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered; - KeyStore.init(); -} -//# sourceMappingURL=JsStore-1.3.0.js.map \ No newline at end of file diff --git a/Dist/V 1.3/V 1.3.0/JsStore-1.3.0.js.map b/Dist/V 1.3/V 1.3.0/JsStore-1.3.0.js.map deleted file mode 100644 index 3f55d375..00000000 --- a/Dist/V 1.3/V 1.3.0/JsStore-1.3.0.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"JsStore-1.3.0.js","sourceRoot":"","sources":["../License.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../JsStore/enums.ts","../JsStore/interfaces.ts","../JsStore/CommonLogic.ts","../JsStore/UtilsLogic.ts","../JsStore/HelperLogic.ts","../JsStore/Model/Column.ts","../JsStore/Model/Table.ts","../JsStore/Model/DataBase.ts","../JsStore/Business/BaseHelperLogic.ts","../JsStore/Business/BaseLogic.ts","../JsStore/Business/CreateDbLogic.ts","../JsStore/Business/DropDbLogic.ts","../JsStore/Business/InsertHelperLogic.ts","../JsStore/Business/InsertLogic.ts","../JsStore/Business/BulkInsertLogic.ts","../JsStore/Business/OpenDbLogic.ts","../JsStore/Business/ClearLogic.ts","../JsStore/Business/MainLogic.ts","../JsStore/Business/Select/BaseSelectLogic.ts","../JsStore/Business/Select/NotWhereLogic.ts","../JsStore/Business/Select/InLogic.ts","../JsStore/Business/Select/LikeLogic.ts","../JsStore/Business/Select/WhereLogic.ts","../JsStore/Business/Select/JoinLogic.ts","../JsStore/Business/Select/GroupByHelperLogic.ts","../JsStore/Business/Select/HelperLogic.ts","../JsStore/Business/Select/InstanceLogic.ts","../JsStore/Business/Count/BaseCountLogic.ts","../JsStore/Business/Count/NotWhereLogic.ts","../JsStore/Business/Count/InLogic.ts","../JsStore/Business/Count/LikeLogic.ts","../JsStore/Business/Count/WhereLogic.ts","../JsStore/Business/Count/InstanceLogic.ts","../JsStore/Business/Update/BaseUpdateLogic.ts","../JsStore/Business/Update/NotWhereLogic.ts","../JsStore/Business/Update/InLogic.ts","../JsStore/Business/Update/LikeLogic.ts","../JsStore/Business/Update/WhereLogic.ts","../JsStore/Business/Update/InstanceLogic.ts","../JsStore/Business/Delete/BaseDeleteLogic.ts","../JsStore/Business/Delete/NotWhereLogic.ts","../JsStore/Business/Delete/InLogic.ts","../JsStore/Business/Delete/LikeLogic.ts","../JsStore/Business/Delete/WhereLogic.ts","../JsStore/Business/Delete/InstanceLogic.ts","../JsStore/CodeExecutionHelper.ts","../JsStore/JsStoreInstance.ts","../JsStore/DirectCode.ts"],"names":[],"mappings":"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","sourcesContent":["/** JsStore.js - v1.3.0 - 22/11/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n\r\n export enum WhereQryOption {\r\n In = \"In\",\r\n Like = \"Like\",\r\n Or = \"Or\"\r\n }\r\n\r\n export enum DataType {\r\n String = \"string\",\r\n Object = \"object\",\r\n Array = \"array\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder,\r\n GroupBy: any,\r\n Aggregate: {\r\n Max: any,\r\n Min: any,\r\n Count: any,\r\n Sum: any,\r\n Avg: any\r\n },\r\n IgnoreCase: boolean\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n IgnoreCase: boolean,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipDataCheck\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n\r\n export interface IAggregate {\r\n Max: Array,\r\n Min: Array,\r\n Sum: Array,\r\n Count: Array,\r\n Avg: Array\r\n }\r\n\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n\r\n export var log = function (msg) {\r\n if (EnableLog) {\r\n console.log(msg);\r\n }\r\n }\r\n\r\n export var logError = function (msg) {\r\n if (EnableLog) {\r\n console.error(msg);\r\n }\r\n }\r\n}","module JsStore {\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function = null) {\r\n var UsePromise = callback ? false : true;\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n resolve(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n resolve(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n })\r\n }\r\n else {\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n reject(Error);\r\n });\r\n }\r\n else if (errCallBack) {\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BaseHelper {\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n\r\n protected sortNumberInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a - b;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortNumberInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b - a;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b.toLowerCase().localeCompare(a.toLowerCase());\r\n });\r\n return values;\r\n };\r\n\r\n private getCombination(word: string) {\r\n var Results = [],\r\n doAndPushCombination = function (word: string, chars, index: number) {\r\n if (index == word.length) {\r\n Results.push(chars.join(\"\"));\r\n } else {\r\n var ch = word.charAt(index);\r\n chars[index] = ch.toLowerCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n chars[index] = ch.toUpperCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n }\r\n };\r\n doAndPushCombination(word, [], 0);\r\n return Results;\r\n }\r\n\r\n protected getAllCombinationOfWord(word, isArray) {\r\n if (isArray) {\r\n var Results = [];\r\n for (var i = 0, length = word.length; i < length; i++) {\r\n Results = Results.concat(this.getCombination(word[i]))\r\n }\r\n return Results;\r\n }\r\n else {\r\n return this.getCombination(word);\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base extends BaseHelper {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n logError(Error);\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.Query.IgnoreCase === true) {\r\n this.Query.Where = this.makeQryInCaseSensitive(this.Query.Where);\r\n }\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In':\r\n this.executeInLogic(Column, Value['In']);\r\n break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n case 'Aggregate': break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected makeQryInCaseSensitive = function (qry) {\r\n var Results = [],\r\n ColumnValue,\r\n KeyValue;\r\n for (var column in qry) {\r\n ColumnValue = qry[column];\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n KeyValue = ColumnValue[key]\r\n switch (key) {\r\n case WhereQryOption.In:\r\n Results = Results.concat(this.getAllCombinationOfWord(KeyValue, true));\r\n break;\r\n case WhereQryOption.Like:\r\n break;\r\n default:\r\n Results = Results.concat(this.getAllCombinationOfWord(KeyValue));\r\n }\r\n }\r\n qry[column]['In'] = Results;\r\n }\r\n else {\r\n Results = Results.concat(this.getAllCombinationOfWord(ColumnValue));\r\n qry[column] = {\r\n In: Results\r\n }\r\n }\r\n\r\n }\r\n\r\n return qry;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n DbConnection.close();\r\n setTimeout(function () {\r\n That.deleteDb(name, onSuccess, onError);\r\n }, 100);\r\n }\r\n\r\n deleteDb = function (name: string, onSuccess: Function, onError: Function) {\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"database is blocked, cant be deleted right now.\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n onSuccess();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class InsertHelper extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n protected checkModifyInsertValues = function (table, values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n Value,\r\n TableName = table.Name,\r\n checkDatas = function () {\r\n Value = values[ValueIndex++];\r\n checkInternal();\r\n },\r\n checkInternal = function () {\r\n if (Value) {\r\n checkAndModifyValue();\r\n }\r\n else {\r\n That.insertData(values);\r\n }\r\n },\r\n checkAndModifyValue = function () {\r\n var Index = 0,\r\n checkAndModifyColumn = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(Value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof Value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n Value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && Value[column.Name] == null) { //check Default Schema\r\n Value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n }\r\n else {\r\n checkDatas();\r\n }\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n }\r\n checkDatas();\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends InsertHelper {\r\n private insertData = function (values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable: Function;\r\n if (IsReturn) {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n That.ValuesAffected.push(value);\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n ++That.RowAffected;\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n }\r\n }\r\n }\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n var ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var Table = this.getTable(query.Into);\r\n if (Table) {\r\n if (this.Query.SkipDataCheck) {\r\n this.insertData(this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n else {\r\n this.checkModifyInsertValues(Table, this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BulkInsert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private bulkinsertData = function () {\r\n var That = this;\r\n this.Transaction = DbConnection.transaction([this.Query.Into], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(this.Query.Into);\r\n this.Transaction.oncomplete = function (e) {\r\n That.OnSuccess();\r\n }\r\n this.Query.Values.forEach(function (value) {\r\n That.ObjectStore.add(value);\r\n });\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.bulkinsertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n log('checking connection and executing request:' + request.Name);\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.executeLogic(request);\r\n break;\r\n case 'change_log_status':\r\n this.changeLogStatus(request);\r\n default:\r\n switch (Status.ConStatus) {\r\n case ConnectionStatus.Connected: {\r\n this.executeLogic(request);\r\n }; break;\r\n case ConnectionStatus.Closed: {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }; break;\r\n }\r\n }\r\n }\r\n\r\n private changeLogStatus = function (request) {\r\n if (request.Query['logging'] === true) {\r\n EnableLog = true;\r\n }\r\n else {\r\n EnableLog = false;\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'bulk_insert': this.bulkInsert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'export_json': this.exportJson(request.Query, OnSuccess, OnError);\r\n break;\r\n default: console.error('The Api:-' + request.Name + 'does not support');\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public bulkInsert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new BulkInsert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n\r\n public exportJson = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n this.select(query, function (results) {\r\n var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], {\r\n type: \"text/json\"\r\n }));\r\n onSuccess(Url);\r\n }, function (err) {\r\n onError(err);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class In extends NotWhere {\r\n private executeSkipAndLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n skipOrPush(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkipForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n skipOrPush((Cursor.value));\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeSimpleForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n protected executeInLogic = function (column, values) {\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimitForIn(column, values);\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkipForIn(column, values);\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimitForIn(column, values);\r\n }\r\n else {\r\n this.executeSimpleForIn(column, values);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class GroupByHelper extends Where {\r\n constructor() {\r\n super();\r\n }\r\n\r\n private executeAggregateGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = undefined;\r\n //assign aggregate and free aggregate memory\r\n var AggregateQry = this.Query.Aggregate;\r\n this.Query.Aggregate = undefined;\r\n var Index, ObjKey, Value, AggrColumn;\r\n var calculateAggregate = function () {\r\n for (var prop in AggregateQry) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Max(\" + AggrColumn + \")\"] : 0;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n //compare between old value and new value\r\n return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Min(\" + AggrColumn + \")\"] : Infinity;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity;\r\n //compare between old value and new value\r\n return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old sum value\r\n var Sum = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = Sum;\r\n //get old count value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = Value;\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n getAvg();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (typeof GrpQry == 'string') {\r\n for (Index in Datas) {\r\n ObjKey = Datas[Index][GrpQry];\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n }\r\n else {\r\n for (Index in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[Index][GrpQry[column]];\r\n }\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (var i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n //Checking for avg and if exist then fill the datas;\r\n if (AggregateQry.Avg) {\r\n if (typeof AggregateQry.Avg == 'string') {\r\n for (Index in Datas) {\r\n var Sum = Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"],\r\n Count = Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n Datas[Index][\"Avg(\" + AggregateQry.Avg + \")\"] = Sum / Count;\r\n if (AggregateQry.Count !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n }\r\n if (AggregateQry.Sum !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"];\r\n }\r\n }\r\n }\r\n else {\r\n var IsCountTypeString = typeof AggregateQry.Count,\r\n IsSumTypeString = typeof AggregateQry.Count;\r\n for (Index in Datas) {\r\n for (var column in AggregateQry.Avg) {\r\n var AvgColumn = AggregateQry.Avg[column],\r\n Sum = Datas[Index][\"Sum(\" + AvgColumn + \")\"],\r\n Count = Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n Datas[Index][\"Avg(\" + AvgColumn + \")\"] = Sum / Count;\r\n\r\n if (IsCountTypeString) {\r\n if (AggregateQry.Count !== AvgColumn) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Count.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n\r\n if (IsSumTypeString) {\r\n if (AggregateQry.Sum !== AvgColumn) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.Results = Datas;\r\n };\r\n\r\n protected processGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = this.Query.GroupBy = undefined;\r\n if (typeof GrpQry == 'string') {\r\n for (var i in Datas) {\r\n LookUpObj[Datas[i][GrpQry]] = Datas[i];\r\n }\r\n }\r\n else {\r\n var ObjKey;\r\n for (var i in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[i][GrpQry[column]];\r\n }\r\n LookUpObj[ObjKey] = Datas[i];\r\n }\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Helper extends GroupByHelper {\r\n processOrderBy = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private processAggregateQry = function () {\r\n var Datas = this.Results,\r\n Results = {},\r\n Key;\r\n //free results memory\r\n this.Results = undefined;\r\n for (var prop in this.Query.Aggregate) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key] ? 1 : 0;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result = Result > Datas[i][Key] ? Result : Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n var Result = Infinity, Value = Infinity;\r\n for (var i in Datas) {\r\n Value = Datas[i][Key] ? Datas[i][Key] : Infinity;\r\n Result = Result < Value ? Result : Value;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result / Datas.length;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n //add results to the first index of result\r\n for (var prop in Results) {\r\n Datas[0][prop] = Results[prop];\r\n }\r\n this.Results = Datas;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Helper {\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.processOrderBy();\r\n if (this.Query.GroupBy) {\r\n if (this.Query.Aggregate) {\r\n this.executeAggregateGroupBy();\r\n }\r\n else {\r\n this.processGroupBy();\r\n }\r\n }\r\n else if (this.Query.Aggregate) {\r\n this.processAggregateQry();\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.count(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n That.ResultCount += (e).target.result;\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (That.CheckFlag) {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n protected onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this,\r\n Cursor: IDBCursorWithValue;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected pushApi = function (request: IWebWorkerRequest, usePromise: boolean) {\r\n if (usePromise === true) {\r\n var That = this;\r\n return new Promise(function (resolve, reject) {\r\n request.OnSuccess = function (result) {\r\n resolve(result);\r\n };\r\n request.OnError = function (error) {\r\n reject(error);\r\n };\r\n That.prcoessExecutionOfCode(request);\r\n });\r\n }\r\n else {\r\n this.prcoessExecutionOfCode(request);\r\n return this;\r\n }\r\n }\r\n\r\n private prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.RequestQueue.splice(0, 0, request);\r\n if (WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n };\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n break;\r\n default: this.RequestQueue.push(request);\r\n }\r\n }\r\n else {\r\n this.RequestQueue.push(request);\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n log(\"request pushed: \" + request.Name);\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n log(\"request executing : \" + FirstRequest.Name);\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n log(\"request finished : \" + FinishedRequest.Name);\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n protected createWorker = function () {\r\n var That: CodeExecutionHelper = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n That.executeCodeUsingWorker({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n That.executeCode();\r\n }\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\ndeclare var Promise: any;\r\n\r\nmodule JsStore {\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n WorkerInstance.terminate();\r\n }\r\n else if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n KeyStore.init();\r\n }\r\n this.createWorker();\r\n if (dbName) {\r\n this.openDb(dbName);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * open database\r\n * \r\n * @param {string} dbName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n openDb = function (dbName: string, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'open_db',\r\n Query: dbName,\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n }, false);\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {Model.IDataBase} dataBase \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n createDb = function (dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n }, false);\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb = function (onSuccess: Function, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select = function (query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count = function (query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update = function (query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete = function (query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear = function (tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * insert bulk amount of data\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n bulkInsert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n var UsePromise = onSuccess ? false : true;\r\n query.OnSuccess = query.OnError = null;\r\n return this.pushApi({\r\n Name: 'bulk_insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * export the result in json file\r\n * \r\n * @param {ISelect} qry \r\n * @memberof Instance\r\n */\r\n exportJson = function (query: ISelect) {\r\n var OnSuccess = function (url) {\r\n var Link = document.createElement(\"a\");\r\n Link.href = url;\r\n Link.download = query.From + \".json\";\r\n Link.click();\r\n if (OnSuccessCallBack) {\r\n OnSuccessCallBack();\r\n }\r\n },\r\n OnError = query['OnError'],\r\n OnSuccessCallBack = query['OnSuccess'];\r\n query['OnSuccess'] = query['OnError'] = undefined;\r\n var UsePromise = OnSuccessCallBack ? false : true;\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise).then(function (url) {\r\n OnSuccess(url);\r\n resolve();\r\n }).catch(function (err) {\r\n reject(err);\r\n });\r\n });\r\n }\r\n else {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","if (self && !self.alert) {\r\n self.onmessage = function (e) {\r\n JsStore.log(\"Request executing from WebWorker, request name: \" + e.data.Name);\r\n var Request = e.data,\r\n BusinessMain = new JsStore.Business.Main();\r\n BusinessMain.checkConnectionAndExecuteLogic(Request);\r\n };\r\n JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered;\r\n KeyStore.init();\r\n}\r\n\r\n"]} \ No newline at end of file diff --git a/Dist/V 1.3/V 1.3.0/JsStore-1.3.0.min.js b/Dist/V 1.3/V 1.3.0/JsStore-1.3.0.min.js deleted file mode 100644 index 1a696956..00000000 --- a/Dist/V 1.3/V 1.3.0/JsStore-1.3.0.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** JsStore.js - v1.3.0 - 22/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),KeyStore;!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:(console.log("worked failed"),self.postMessage("message:WorkerFailed"))},e}();e.Utils=t}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var r=this;new e.Business.Main(function(e){r.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var r=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?r.OnError?r.OnError(t.ErrorDetails):console.log(t.ErrorDetails):r.OnSuccess&&(null!=t.ReturnedValue?r.OnSuccess(t.ReturnedValue):r.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){1==++this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error),console.error(e)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.get=function(){var e=this;for(var t in this.Query.Where){!function(t,r){var n=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(r));n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},n.onsuccess=function(t){var r=t.target.result;r&&(e.Results=r.value.Value)}}(t,this.Query.Where[t]);break}};var u=s;return s.Query=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([r.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(r.From),s.Transaction.oncomplete=function(e){null!=n&&n(u.Results)},s.get(),s}return __extends(r,t),r}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.setData=function(e){var t=this,r=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var n=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));n.onsuccess=function(t){var n=t.target.result;n?(n.value.Value=e.Value,n.update(n.value)):r()},n.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([r.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(r.TableName),s.Transaction.oncomplete=function(e){null!=n&&n()},s.setData(r.Set)}catch(e){console.error(e)}return s}return __extends(r,t),r}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this;for(var t in this.Query.Where){e.ErrorOccured||function(t,r){var n=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(r));n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},n.onsuccess=function(t){var r=t.target.result;r&&(r.delete(),++e.RowAffected,r.continue())}}(t,e.Query.Where[t]);break}};var u=s;return s.Query=r,s.OnError=o,s.Transaction=e.DbConnection.transaction([r.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(r.From),s.Transaction.oncomplete=function(){null!=n&&n(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(r,t),r}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){var r=function(){return function(r,n,o,s){var u=self.indexedDB.open(r,1);u.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},u.onsuccess=function(r){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(r){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(n,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=r}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var r=function(){return function(r){void 0===r&&(r=null),this.checkConnectionAndExecuteLogic=function(r){if("create_db"==r.Name||"open_db"==r.Name)this.executeLogic(r);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(r);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)n=this,setTimeout(function(){n.checkConnectionAndExecuteLogic(r)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var n=this;this.createDb(e.TableName,function(){n.checkConnectionAndExecuteLogic(r)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,r=function(e){t.returnResult({ReturnedValue:e})},n=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,r,n);break;case"set":this.set(e.Query,r,n);break;case"remove":this.remove(e.Query,r,n);break;case"create_db":this.createDb(e.Query,r,n)}},this.set=function(e,r,n){new t.Set(e,r,n)},this.remove=function(e,r,n){new t.Remove(e,r,n)},this.get=function(e,r,n){new t.Get(e,r,n)},this.createDb=function(e,r,n){new t.InitDb("KeyStore",e,r,n)},this.OnSuccess=r}}();t.Main=r}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,r,n){void 0===n&&(n=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:r,OnError:n}),this},e.set=function(t,r,n,o){void 0===n&&(n=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:r}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:n,OnError:o}),this},e.remove=function(t,r,n){void 0===r&&(r=null),void 0===n&&(n=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:r,OnError:n}),this}}(KeyStore||(KeyStore={}));var JsStore;!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.In="In",e.Like="Like",e.Or="Or"}(e.WhereQryOption||(e.WhereQryOption={}));!function(e){e.String="string",e.Object="object",e.Array="array"}(e.DataType||(e.DataType={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.TempResults=[],e.throwError=function(e){throw e},e.getObjectFirstKey=function(e){for(var t in e)return t;return null},e.log=function(t){e.EnableLog&&console.log(t)},e.logError=function(t){e.EnableLog&&console.error(t)}}(JsStore||(JsStore={}));var JsStore;!function(e){var t=function(){function t(){}return t.getError=function(t,r){var n={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:n.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:n.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:n.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:n.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:n.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:n.Message="No value supplied";break;case e.ErrorType.InvalidOp:n.Message="Invalid Op Value '"+r.Op+"'";break;case e.ErrorType.ColumnNotExist:n.Message="Column '"+r.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:n.Message="Null value is not allowed for column '"+r.ColumnName+"'";break;case e.ErrorType.BadDataType:n.Message="Supplied value for column '"+r.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:n.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:n.Message="Table '"+r.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:n.Message="Database '"+r.DbName+"' does not exist";break;default:console.error("the error type is not defined")}return n},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),r=t.length;r--;){var n=t[r];e[n.toLowerCase()]=e[n],delete e[n]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));var JsStore;!function(e){e.isDbExist=function(t,r,n){void 0===n&&(n=null);var o=!r;if(e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){if(o)return new Promise(function(r,n){"string"==typeof t?e.getDbVersion(t,function(e){r(Boolean(e))}):e.getDbVersion(t.DbName,function(e){r(t.Table.Version<=e)})});"string"==typeof t?e.getDbVersion(t,function(e){r(Boolean(e))}):e.getDbVersion(t.DbName,function(e){r(t.Table.Version<=e)})}else{var s={Name:e.Status.LastError,Message:""};switch(s.Name){case e.ErrorType.IndexedDbBlocked:s.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:s.Message="IndexedDB is not supported"}if(o)return new Promise(function(e,t){t(s)});n&&n(s)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})},e.disableLog=function(){e.EnableLog=!1,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})}}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(t,r){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+r),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=r}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){function r(e,r){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var n=this;e.Columns.forEach(function(r){n.Columns.push(new t.Column(r,e.Name))}),this.setRequireDelete(r),this.setDbVersion(r),this.setPrimaryKey(r)}return r.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},r.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:er.Version?e.DbVersion:r.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+r.Name+"_Version",e.DbVersion),r.Version=e.DbVersion},r}();t.Table=r}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var r=this;this.Name=t.Name,t.Tables.forEach(function(t){r.Tables.push(new e.Table(t,r.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(){function t(){this.getTable=function(t){var r;return e.ActiveDataBase.Tables.every(function(e){return e.Name!=t||(r=e,!1)}),r},this.getKeyRange=function(e,t){var r;switch(t){case"-":r=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":r=IDBKeyRange.lowerBound(e,!0);break;case">=":r=IDBKeyRange.lowerBound(e);break;case"<":r=IDBKeyRange.upperBound(e,!0);break;case"<=":r=IDBKeyRange.upperBound(e);break;default:r=IDBKeyRange.only(e)}return r},this.getObjectSecondKey=function(e){var t=!1;for(var r in e){if(t)return r;t=!0}},this.getPrimaryKey=function(e){var t=this.getTable(e).PrimaryKey;return t||this.getKeyPath()},this.getKeyPath=function(t){return e.DbConnection.transaction([t],"readonly").objectStore(t).keyPath},this.sortNumberInAsc=function(e){return e.sort(function(e,t){return e-t}),e},this.sortNumberInDesc=function(e){return e.sort(function(e,t){return t-e}),e},this.sortAlphabetInAsc=function(e){return e.sort(function(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}),e},this.sortAlphabetInDesc=function(e){return e.sort(function(e,t){return t.toLowerCase().localeCompare(e.toLowerCase())}),e}}return t.prototype.getCombination=function(e){var t=[],r=function(e,n,o){if(o==e.length)t.push(n.join(""));else{var s=e.charAt(o);n[o]=s.toLowerCase(),r(e,n,o+1),n[o]=s.toUpperCase(),r(e,n,o+1)}};return r(e,[],0),t},t.prototype.getAllCombinationOfWord=function(e,t){if(t){for(var r=[],n=0,o=e.length;n1||Object.keys(this.Query.Where).length>1);var n=e.getObjectFirstKey(r);switch(n){case"Like":var o=r.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":this.executeInLogic(t,r.In);break;case"-":case">":case"<":case">=":case"<=":this.executeWhereLogic(t,r,n);break;case"Aggregate":break;default:this.executeWhereLogic(t,r)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,r)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)},r.makeQryInCaseSensitive=function(t){var r,n,o=[];for(var s in t)if("object"==typeof(r=t[s])){for(var u in r)switch(n=r[u],u){case e.WhereQryOption.In:o=o.concat(this.getAllCombinationOfWord(n,!0));break;case e.WhereQryOption.Like:break;default:o=o.concat(this.getAllCombinationOfWord(n))}t[s].In=o}else o=o.concat(this.getAllCombinationOfWord(r)),t[s]={In:o};return t},r}return __extends(r,t),r.prototype.checkForWhereConditionMatch=function(t){var r=this.Query.Where,n=!0;for(var o in r){var s=r[o];if(!n)break;if("object"==typeof s)for(var u in s){if(!n)break;switch(u){case"In":!function(e,t){for(var o=r[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(i=o.indexOf(u.toLowerCase()))<0&&(n=!1);break;case e.Occurence.First:((i=o.indexOf(u.toLowerCase()))>0||i<0)&&(n=!1);break;default:(i=o.lastIndexOf(u.toLowerCase()))":case"<":case">=":case"<=":!function(e,t,o){var s=r[e][o];switch(o){case">":t<=s&&(n=!1);break;case"<":t>=s&&(n=!1);break;case"<=":t>s&&(n=!1);break;case">=":ts.High)&&(n=!1)}}(o,t[o],u)}}else if(s!=t[o]){n=!1;break}}return n},r}(t.BaseHelper);t.Base=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){var s=[],u=indexedDB.open(t.ActiveDataBase.Name,r);u.onerror=function(e){null!=o&&o(e.target.error)},u.onsuccess=function(r){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=n&&n(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},u.onupgradeneeded=function(e){var r=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(r.objectStoreNames.contains(e.Name)&&r.deleteObjectStore(e.Name),i(r,e)):e.RequireCreation&&i(r,e)})};var i=function(e,r){try{if(r.PrimaryKey.length>0)n=e.createObjectStore(r.Name,{keyPath:r.PrimaryKey}),r.Columns.forEach(function(e){e.PrimaryKey?n.createIndex(e.Name,e.Name,{unique:!0}):n.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_"+e.Name+"_Value",0)});else{var n=e.createObjectStore(r.Name,{autoIncrement:!0});r.Columns.forEach(function(e){n.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_"+e.Name+"_Value",0)})}s.push(r.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_Version",r.Version)}catch(e){console.error(e)}}}}();t.CreateDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){this.deleteDb=function(r,n,o){var s=indexedDB.deleteDatabase(r);s.onblocked=function(){null!=o&&o("database is blocked, cant be deleted right now.")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(r){r.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+r.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),n()}};var s=this;t.DbConnection.close(),setTimeout(function(){s.deleteDb(r,n,o)},100)}}();t.DropDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(){var n=null!==r&&r.apply(this,arguments)||this;return n.ValuesAffected=[],n.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},n.checkModifyInsertValues=function(r,n){var o,s=this,u=0,i=r.Name,c=function(){o=n[u++],a()},a=function(){o?l():s.insertData(n)},l=function(){var n=0,u=function(a){if(a){var l=function(t,r){s.ErrorOccured=!0,s.Error=e.Utils.getError(t,r)},h=function(){a.NotNull&&e.isNull(o[a.Name])?l(e.ErrorType.NullValue,{ColumnName:a.Name}):a.DataType&&typeof o[a.Name]!=a.DataType&&l(e.ErrorType.BadDataType,{ColumnName:a.Name}),u(r.Columns[n++])};s.ErrorOccured?s.onErrorOccured(s.Error,!0):a.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",function(e){o[a.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",e),h()}):a.Default&&null==o[a.Name]?(o[a.Name]=a.Default,h()):h()}else c()};u(r.Columns[n++])};c()},n}return __extends(n,r),n}(t.Base);t.InsertHelper=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(n,o,s){var u=r.call(this)||this;u.insertData=function(e){var r,n=this,o=0,s=this.Query.Return;r=s?function(t){if(t){var s=u.add(t);s.onerror=function(e){n.onErrorOccured(e)},s.onsuccess=function(s){n.ValuesAffected.push(t),r(e[o++])}}}:function(t){if(t){var s=u.add(t);s.onerror=function(e){n.onErrorOccured(e)},s.onsuccess=function(t){++n.RowAffected,r(e[o++])}}},n.Transaction=t.DbConnection.transaction([n.Query.Into],"readwrite");var u=n.Transaction.objectStore(n.Query.Into);n.Transaction.oncomplete=function(e){n.onTransactionCompleted()},r(e[o++])};try{u.Query=n,u.OnSuccess=o,u.OnError=s;var i=u.getTable(n.Into);if(i)u.Query.SkipDataCheck?(u.insertData(u.Query.Values),u.Query.Values=void 0):(u.checkModifyInsertValues(i,u.Query.Values),u.Query.Values=void 0);else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:n.Into})}return u}return __extends(n,r),n}(t.InsertHelper);t.Insert=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(r){function n(n,o,s){var u=r.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.bulkinsertData=function(){var e=this;this.Transaction=t.DbConnection.transaction([this.Query.Into],"readwrite"),this.ObjectStore=this.Transaction.objectStore(this.Query.Into),this.Transaction.oncomplete=function(t){e.OnSuccess()},this.Query.Values.forEach(function(t){e.ObjectStore.add(t)})};try{u.Query=n,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(n.Into),u.Table)u.bulkinsertData();else{var i=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n.Into});e.throwError(i)}}catch(e){u.onExceptionOccured(e,{TableName:n.Into})}return u}return __extends(n,r),n}(t.Base);t.BulkInsert=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r,n,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,r);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(r){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=n&&n()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([r],"readwrite").objectStore(r).clear();return i.onsuccess=function(t){u.getTable(r).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.set("JsStore_"+e.ActiveDataBase.Name+"_"+r+"_"+t.Name+"_Value",0)}),null!=n&&n()},i.onerror=function(e){null!=o&&o()},s}return __extends(r,t),r}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){var r=function(){return function(r){void 0===r&&(r=null),this.checkConnectionAndExecuteLogic=function(r){switch(e.log("checking connection and executing request:"+r.Name),r.Name){case"create_db":case"open_db":this.executeLogic(r);break;case"change_log_status":this.changeLogStatus(r);default:switch(e.Status.ConStatus){case e.ConnectionStatus.Connected:this.executeLogic(r);break;case e.ConnectionStatus.Closed:var n=this;this.openDb(t.ActiveDataBase.Name,function(){n.checkConnectionAndExecuteLogic(r)})}}},this.changeLogStatus=function(t){!0===t.Query.logging?e.EnableLog=!0:e.EnableLog=!1},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,r=function(e){t.returnResult({ReturnedValue:e})},n=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,r,n);break;case"insert":this.insert(e.Query,r,n);break;case"update":this.update(e.Query,r,n);break;case"delete":this.delete(e.Query,r,n);break;case"open_db":this.openDb(e.Query,r,n);break;case"create_db":this.createDb(e.Query,r,n);break;case"clear":this.clear(e.Query,r,n);break;case"drop_db":this.dropDb(r,n);break;case"count":this.count(e.Query,r,n);break;case"bulk_insert":this.bulkInsert(e.Query,r,n);break;case"export_json":this.exportJson(e.Query,r,n);break;default:console.error("The Api:-"+e.Name+"does not support")}},this.openDb=function(r,n,o){KeyStore.get("JsStore_"+r+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:r});KeyStore.get("JsStore_"+r+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,n,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,r){new t.DropDb(t.ActiveDataBase.Name,e,r)},this.update=function(e,r,n){new t.Update.Instance(e,r,n)},this.insert=function(r,n,o){Array.isArray(r.Values)?new t.Insert(r,n,o):e.throwError("Value should be array :- supplied value is not array")},this.bulkInsert=function(r,n,o){Array.isArray(r.Values)?new t.BulkInsert(r,n,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,r,n){new t.Delete.Instance(e,r,n)},this.select=function(e,r,n){"object"==typeof e.From?new t.Select.Join(e,r,n):new t.Select.Instance(e,r,n)},this.count=function(e,r,n){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,r,n)):new t.Count.Instance(e,r,n)},this.createDb=function(r,n,o){KeyStore.get("JsStore_"+r.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(r);var u=function(){setTimeout(function(){var r=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+r.Name+"_Version",function(s){s==r.Version?new t.CreateDb(e.DbVersion,n,o):u()})},200)};u()})},this.clear=function(e,r,n){new t.Clear(e,r,n)},this.exportJson=function(e,t,r){this.select(e,function(e){var r=URL.createObjectURL(new Blob([JSON.stringify(e)],{type:"text/json"}));t(r)},function(e){r(e)})},this.OnSuccess=r}}();t.Main=r}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.Sorted=!1,t.CheckFlag=!1,t.removeDuplicates=function(){var e=this.Results;this.Results=void 0;var t=this.getPrimaryKey(this.Query.From),r={};for(var n in e)r[e[n][t]]=e[n];e=[];for(n in r)e.push(r[n]);this.Results=e},t}return __extends(t,e),t}(e.Base);t.BaseSelect=r}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(t){var r=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeWhereUndefinedLogic=function(){var t,r,n=this;if(this.Query.Order&&this.Query.Order.By)if(n.ObjectStore.indexNames.contains(this.Query.Order.By)){var o=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,r=this.ObjectStore.index(n.Query.Order.By).openCursor(null,o)}else{var s=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(s)}else r=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;r.onsuccess=function(r){(t=r.target.result)&&(e&&n.Results.length!=n.LimitRecord?(n.Results.push(t.value),t.continue()):(e=!0,t.advance(n.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;r.onsuccess=function(r){(t=r.target.result)&&(e?(n.Results.push(t.value),t.continue()):(e=!0,t.advance(n.SkipRecord)))}}():this.LimitRecord?r.onsuccess=function(e){(t=e.target.result)&&n.Results.length!=n.LimitRecord&&(n.Results.push(t.value),t.continue())}:r.onsuccess=function(e){(t=e.target.result)&&(n.Results.push(t.value),t.continue())},r.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},r}return __extends(r,t),r}(t.BaseSelect);t.NotWhere=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeSkipAndLimitForIn=function(e,t){var r,n=this.SkipRecord,o=this,s=this.ObjectStore.index(e),u=function(e){0==n?o.Results.push(e):--n};if(o.CheckFlag)for(var i=0,c=t.length;i=0&&(r=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(r=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(r=!0)}return r},r.executeSkipAndLimit=function(){var e,t=this.SkipRecord,r=this,n=function(e){0==t?r.Results.push(e):--t};r.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,r.Results.length!=r.LimitRecord&&e&&(r.filterOnOccurence(e.key)&&r.checkForWhereConditionMatch(e.value)&&n(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,r.Results.length!=r.LimitRecord&&e&&(r.filterOnOccurence(e.key)&&n(e.value),e.continue())}},r.executeSkip=function(){var e,t=this.SkipRecord,r=this,n=function(e){0==t?r.Results.push(e):--t};r.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(r.filterOnOccurence(e.key)&&r.checkForWhereConditionMatch(e.value)&&n(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(r.filterOnOccurence(e.key)&&n(e.value),e.continue())}},r.executeLimit=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(r){e=r.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.key)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(r){e=r.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.key)&&t.Results.push(e.value),e.continue())}},r.executeSimple=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(r){(e=r.target.result)&&(t.filterOnOccurence(e.key)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(r){(e=r.target.result)&&(t.filterOnOccurence(e.key)&&t.Results.push(e.value),e.continue())}},r.executeLikeLogic=function(e,t,r){var n=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n,o,s=this;t=r?t[r]:t,(n=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r))).onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?function(){var e=!1;s.CheckFlag?n.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:n.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;s.CheckFlag?n.onsuccess=function(t){(o=t.target.result)&&(e?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:n.onsuccess=function(t){(o=t.target.result)&&(e?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.LimitRecord?s.CheckFlag?n.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&s.checkForWhereConditionMatch(o.value)&&(s.Results.push(o.value),o.continue())}:n.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&(s.Results.push(o.value),o.continue())}:s.CheckFlag?n.onsuccess=function(e){(o=e.target.result)&&(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue())}:n.onsuccess=function(e){(o=e.target.result)&&(s.Results.push(o.value),o.continue())}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(r,n,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,r){var n,o=this,s=[],u=0,i=(r.Column,o.Results),c=i.length;new e.Instance({From:r.Table,Where:r.Where,Order:r.Order},function(e){e.forEach(function(e,r){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,n){if(s[u]={},e==t[r.Column]){s[u][r.Table]=t;for(c=0;cn.CurrentQueryStackIndex+1?n.startExecutionJoinLogic():n.onTransactionCompleted(null)},a=function(e){var c=!1;e.forEach(function(e,a){for(i=0;in.CurrentQueryStackIndex+1?n.startExecutionJoinLogic():n.onTransactionCompleted(null)},h=function(e){if(e.length>0)e.forEach(function(e){o[s]={},o[s][r.Table]=e;for(var t=0;t=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},r}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=e.call(this)||this;return t.executeAggregateGroupBy=function(){var e=this.Query.GroupBy,t=this.Results,r={};this.Results=void 0;var n=this.Query.Aggregate;this.Query.Aggregate=void 0;var o,s,u,i,c=function(){for(var e in n)switch(e){case"Count":var c=function(){return u=r[s],u=u?u["Count("+i+")"]:0,u+=t[o][i]?1:0};if("string"==typeof n[e])i=n[e],t[o]["Count("+i+")"]=c();else if(Array.isArray(n[e]))for(var a in n[e])i=n[e][a],t[o]["Count("+i+")"]=c();break;case"Max":var l=function(){return u=r[s],u=u?u["Max("+i+")"]:0,t[o][i]=t[o][i]?t[o][i]:0,u>t[o][i]?u:t[o][i]};if("string"==typeof n[e])i=n[e],t[o]["Max("+i+")"]=l();else if(Array.isArray(n[e]))for(var a in n[e])i=n[e][a],t[o]["Max("+i+")"]=l();break;case"Min":var h=function(){return u=r[s],u=u?u["Min("+i+")"]:1/0,t[o][i]=t[o][i]?t[o][i]:1/0,u0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,r=e.By;"string"==typeof this.Results[0][r]?"asc"==e.Type?t.Results.sort(function(e,t){return e[r].toLowerCase().localeCompare(t[r].toLowerCase())}):t.Results.sort(function(e,t){return t[r].toLowerCase().localeCompare(e[r].toLowerCase())}):"number"==typeof this.Results[0][r]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[r]-t[r]}):t.Results.sort(function(e,t){return t[r]-e[r]}))}},t.processAggregateQry=function(){var e,t=this.Results,r={};this.Results=void 0;for(var n in this.Query.Aggregate)switch(n){case"Count":var o=function(){var r=0;for(var n in t)r+=t[n][e]?1:0;return r};if("string"==typeof this.Query.Aggregate[n])r["Count("+(e=this.Query.Aggregate[n])+")"]=o();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Count("+(e=this.Query.Aggregate[n][s])+")"]=o();break;case"Max":var u=function(){var r=0;for(var n in t)r=r>t[n][e]?r:t[n][e];return r};if("string"==typeof this.Query.Aggregate[n])r["Max("+(e=this.Query.Aggregate[n])+")"]=u();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Max("+(e=this.Query.Aggregate[n][s])+")"]=u();break;case"Min":var i=function(){var r=1/0,n=1/0;for(var o in t)r=r<(n=t[o][e]?t[o][e]:1/0)?r:n;return r};if("string"==typeof this.Query.Aggregate[n])r["Min("+(e=this.Query.Aggregate[n])+")"]=i();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Min("+(e=this.Query.Aggregate[n][s])+")"]=i();break;case"Sum":var c=function(){var r=0;for(var n in t)r+=t[n][e];return r};if("string"==typeof this.Query.Aggregate[n])r["Sum("+(e=this.Query.Aggregate[n])+")"]=c();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Sum("+(e=this.Query.Aggregate[n][s])+")"]=c();break;case"Avg":var a=function(){var r=0;for(var n in t)r+=t[n][e];return r/t.length};if("string"==typeof this.Query.Aggregate[n])r["Avg("+(e=this.Query.Aggregate[n])+")"]=a();else if(Array.isArray(this.Query.Aggregate[n]))for(var s in this.Query.Aggregate[n])r["Avg("+(e=this.Query.Aggregate[n][s])+")"]=a()}for(var n in r)t[0][n]=r[n];this.Results=t},t}return __extends(t,e),t}(e.GroupByHelper);e.Helper=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(n,o,s){var u=r.call(this)||this;u.onTransactionCompleted=function(){this.SendResultFlag&&(this.processOrderBy(),this.Query.GroupBy?this.Query.Aggregate?this.executeAggregateGroupBy():this.processGroupBy():this.Query.Aggregate&&this.processAggregateQry(),this.OnSuccess(this.Results))},u.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readonly"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.orQuerySuccess=function(){this.Results=this.OrInfo.Results,this.OrInfo.Results=void 0,this.removeDuplicates(),this.OrInfo.OnSucess(this.Results)},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess,Results:[]},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){if(this.OrInfo.Results=this.OrInfo.Results.concat(this.Results),!this.Query.Limit||this.Query.Limit>this.OrInfo.Results.length){this.Results=[];var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.orQuerySuccess()}else this.orQuerySuccess()}};var i=u;u.Query=n,u.OnSuccess=o,u.OnError=s,u.SkipRecord=u.Query.Skip,u.LimitRecord=u.Query.Limit;try{u.Transaction=t.DbConnection.transaction([n.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.Transaction.ontimeout=i.onTransactionCompleted,u.ObjectStore=u.Transaction.objectStore(n.From),n.Where?(n.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:n.From})}return u}return __extends(n,r),n}(r.Helper);r.Instance=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=r}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var r,n=this.ObjectStore.openCursor();n.onsuccess=function(t){(r=t.target.result)&&(++e.ResultCount,r.continue())},n.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var r,n,o=this,s=this.ObjectStore.index(e);if(o.CheckFlag)for(var u=0,i=t.length;u=0&&(r=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(r=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(r=!0)}return r},r.executeLikeLogic=function(e,t,r){var n,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.key)&&o.checkForWhereConditionMatch(n.value)&&++o.ResultCount,n.continue())}:this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.key)&&++o.ResultCount,n.continue())}},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n=this;if(t=r?t[r]:t,n.CheckFlag){(u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r))).onsuccess=function(e){(s=e.target.result)&&(n.checkForWhereConditionMatch(s.value)&&++n.ResultCount,s.continue())},u.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}else if(this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,r));o.onsuccess=function(){n.ResultCount=o.result},o.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}else{var s,u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r));u.onsuccess=function(e){(s=e.target.result)&&(++n.ResultCount,s.continue())},u.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(t){function r(r,n,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=r,s.OnSuccess=n,s.OnError=o;try{var i=function(){u.Transaction=e.DbConnection.transaction([r.From],"readonly"),u.ObjectStore=u.Transaction.objectStore(r.From),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};void 0!=r.Where?r.Where.Or?new e.Select.Instance(r,function(e){u.ResultCount=e.length,u.onTransactionCompleted()},s.OnError):(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}catch(e){s.onExceptionOccured(e,{TableName:r.From})}return s}return __extends(r,t),r}(t.Where);t.Instance=r}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var r in e)if("object"!=typeof e[r])t[r]=e[r];else for(var n in e[r]){switch(n){case"+":t[r]+=e[r][n];break;case"-":t[r]-=e[r][n];break;case"*":t[r]*=e[r][n];break;case"/":t[r]/=e[r][n];break;default:t[r]=e[r]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.executeWhereUndefinedLogic=function(){var e,r=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){(e=n.target.result)&&(e.update(t.updateValue(r.Query.Set,e.value)),++r.RowAffected,e.continue())},n.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}},r}return __extends(r,e),r}(e.BaseUpdate);t.NotWhere=r}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeInLogic=function(t,r){var n,o,s=this,u=this.ObjectStore.index(t);if(s.CheckFlag)for(var i=0,c=r.length;i=0&&(r=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(r=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(r=!0)}return r},n.executeLikeLogic=function(e,r,n){var o,s=this;this.CompValue=r.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},s.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.key)&&s.checkForWhereConditionMatch(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}:this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.key)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}},n}return __extends(n,r),n}(t.In);t.Like=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(t){function r(){var r=null!==t&&t.apply(this,arguments)||this;return r.executeWhereLogic=function(t,r,n){var o,s,u=this;r=n?r[n]:r,s=this.ObjectStore.index(t).openCursor(this.getKeyRange(r,n)),u.CheckFlag?s.onsuccess=function(t){(o=t.target.result)&&(u.checkForWhereConditionMatch(o.value)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected),o.continue())}:s.onsuccess=function(t){(o=t.target.result)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected,o.continue())},s.onerror=function(e){u.ErrorOccured=!0,u.onErrorOccured(e)}},r}return __extends(r,t),r}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(e,n,o){var s=r.call(this)||this;s.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},s.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.In],"readwrite"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.In),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},s.executeOrLogic=function(){var e=this;new t.Select.Instance({From:this.Query.In,Where:this.Query.Where},function(t){var r=e.getPrimaryKey(e.Query.In),n=[],o={};t.forEach(function(e){n.push(e[r])}),o[r]={In:n},e.createtransactionForOrLogic({In:e.Query.In,Where:o,Set:e.Query.Set})},this.OnError)};try{if(s.OnSuccess=n,s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e;var u=s,i=function(){u.Transaction=t.DbConnection.transaction([e.In],"readwrite"),u.ObjectStore=u.Transaction.objectStore(e.In),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};e.Where?e.Where.Or?s.executeOrLogic():(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(n,r),n.prototype.checkSchema=function(t,r){if(t){var n=this.getTable(r),o=this;if(n){var s=function(t,r){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,r)};n.Columns.every(function(r){if(o.ErrorOccured)return!1;if(r.Name in t){!function(t){if(r.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:r.Name}),r.DataType){var n=typeof t;if(n!=r.DataType)if("object"!=n)s(e.ErrorType.BadDataType,{ColumnName:r.Name});else{var o=["+","-","*","/"];for(var u in t){o.indexOf(u)<0&&s(e.ErrorType.BadDataType,{ColumnName:r.Name});break}}}}(t[r.Name])}return!0})}else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r});e.throwError(u)}}else this.ErrorOccured=!0,this.OnSuccess(0)},n}(r.Where);r.Instance=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(t){var r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=r}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e,t=this,r=this.ObjectStore.openCursor();r.onsuccess=function(r){(e=r.target.result)&&(e.delete(),++t.RowAffected,e.continue())},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var r,n,o=this;this.ObjectStore.index(e);if(o.CheckFlag)for(var s=0,u=t.length;s=0&&(r=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(r=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(r=!0)}return r},r.executeLikeLogic=function(e,t,r){var n,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.key)&&o.checkForWhereConditionMatch(n.value)&&(n.delete(),++o.RowAffected),n.continue())}:this.CursorOpenRequest.onsuccess=function(e){(n=e.target.result)&&(o.filterOnOccurence(n.key)&&(n.delete(),++o.RowAffected),n.continue())}},r}return __extends(r,t),r}(t.In);t.Like=r}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,r){var n,o,s=this;t=r?t[r]:t,o=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,r)),s.CheckFlag?o.onsuccess=function(e){(n=e.target.result)&&(s.checkForWhereConditionMatch(n.value)&&(n.delete(),++s.RowAffected),n.continue())}:o.onsuccess=function(e){(n=e.target.result)&&(n.delete(),++s.RowAffected,n.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){!function(t){!function(r){var n=function(r){function n(n,o,s){var u=r.call(this)||this;u.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},u.createtransactionForOrLogic=function(e){var r=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readwrite"),this.Transaction.oncomplete=function(e){r.onTransactionCompleted()},this.Transaction.ontimeout=r.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.OrInfo.OnSucess(this.RowAffected)}};try{var i=u;u.Query=n,u.OnSuccess=o,u.OnError=s,u.Transaction=t.DbConnection.transaction([n.From],"readwrite"),u.ObjectStore=u.Transaction.objectStore(n.From),u.Transaction.oncomplete=function(){i.onTransactionCompleted()},u.Transaction.onerror=function(e){i.onErrorOccured(e)},n.Where?(n.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:n.From})}return u}return __extends(n,r),n}(r.Where);r.Instance=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));var JsStore;!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.pushApi=function(e,t){if(!0===t){var r=this;return new Promise(function(t,n){e.OnSuccess=function(e){t(e)},e.OnError=function(e){n(e)},r.prcoessExecutionOfCode(e)})}return this.prcoessExecutionOfCode(e),this},this.prcoessExecutionOfCode=function(t){if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)switch(t.Name){case"create_db":case"open_db":this.RequestQueue.splice(0,0,t),e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode(),e.Status.ConStatus=e.ConnectionStatus.Connected;break;default:this.RequestQueue.push(t)}else this.RequestQueue.push(t),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode();e.log("request pushed: "+t.Name)},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],r={Name:t.Name,Query:t.Query};e.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(r):this.executeCodeDirect(r)}},this.executeCodeDirect=function(t){var r=this;new e.Business.Main(function(e){r.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var r=this.RequestQueue.shift();this.IsCodeExecuting=!1,r&&(e.log("request finished : "+r.Name),t.ErrorOccured?r.OnError&&r.OnError(t.ErrorDetails):r.OnSuccess&&(null!=t.ReturnedValue?r.OnSuccess(t.ReturnedValue):r.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){console.warn("JsStore is not runing in web worker"),e.WorkerStatus=e.WebWorkerStatus.Failed,e.Status.ConStatus==e.ConnectionStatus.NotStarted&&this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var r=this.getScriptUrl();r&&r.length>0?(e.WorkerInstance=new Worker(r),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},t.executeCodeUsingWorker({Name:"change_log_status",Query:{logging:e.EnableLog}}),setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),e.Status.ConStatus==e.ConnectionStatus.Connected&&t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){var t=this;if("string"==typeof e.data)switch(e.data.split(":")[1]){case"WorkerFailed":t.onWorkerFailed()}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",r=e?e.toLowerCase():"jsstore",n=document.getElementsByTagName("script"),o=n.length-1,s="";o>=0;o--)if(s=n[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(r)>=0)return t=n[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table,JsStore;!function(e){var t=function(t){function r(r){void 0===r&&(r=null);var n=t.call(this)||this;return n.openDb=function(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),this.pushApi({Name:"open_db",Query:e,OnSuccess:t,OnError:r},!1)},n.createDb=function(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),this.pushApi({Name:"create_db",OnSuccess:t,OnError:r,Query:e},!1)},n.dropDb=function(e,t){void 0===t&&(t=null);var r=!e;return this.pushApi({Name:"drop_db",OnSuccess:e,OnError:t},r)},n.select=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"select",Query:e,OnSuccess:t,OnError:r},n)},n.count=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"count",Query:e,OnSuccess:t,OnError:r},n)},n.insert=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"insert",Query:e,OnSuccess:t,OnError:r},n)},n.update=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"update",Query:e,OnSuccess:t,OnError:r},n)},n.delete=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r,e.OnSuccess=e.OnError=null;var n=!t;return this.pushApi({Name:"delete",Query:e,OnSuccess:t,OnError:r},n)},n.clear=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=!t;return this.pushApi({Name:"clear",Query:e,OnSuccess:t,OnError:onerror},n)},n.bulkInsert=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null),t=e.OnSuccess?e.OnSuccess:t,r=e.OnError?e.OnError:r;var n=!t;return e.OnSuccess=e.OnError=null,this.pushApi({Name:"bulk_insert",Query:e,OnSuccess:t,OnError:r},n)},n.exportJson=function(e){var t=function(t){var r=document.createElement("a");r.href=t,r.download=e.From+".json",r.click(),n&&n()},r=e.OnError,n=e.OnSuccess;e.OnSuccess=e.OnError=void 0;var o=!n;if(o)return new Promise(function(n,s){this.pushApi({Name:"export_json",Query:e,OnSuccess:t,OnError:r},o).then(function(e){t(e),n()}).catch(function(e){s(e)})});this.pushApi({Name:"export_json",Query:e,OnSuccess:t,OnError:r},o)},e.WorkerStatus==e.WebWorkerStatus.Registered?e.WorkerInstance.terminate():e.WorkerStatus==e.WebWorkerStatus.NotStarted&&KeyStore.init(),n.createWorker(),r&&n.openDb(r),n}return __extends(r,t),r}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self&&!self.alert&&(self.onmessage=function(e){JsStore.log("Request executing from WebWorker, request name: "+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)},JsStore.WorkerStatus=JsStore.WebWorkerStatus.Registered,KeyStore.init()); \ No newline at end of file diff --git a/Dist/V 1.3/V 1.3.1/jsstore.js.map b/Dist/V 1.3/V 1.3.1/jsstore.js.map deleted file mode 100644 index 54a54cf6..00000000 --- a/Dist/V 1.3/V 1.3.1/jsstore.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"jsstore.js","sourceRoot":"","sources":["../License.ts","../KeyStore/UtilsLogic.ts","../KeyStore/CommonLogic.ts","../KeyStore/Helper.ts","../KeyStore/Business/BaseLogic.ts","../KeyStore/Business/GetLogic.ts","../KeyStore/Business/SetLogic.ts","../KeyStore/Business/RemoveLogic.ts","../KeyStore/Business/InitDbLogic.ts","../KeyStore/Business/MainLogic.ts","../KeyStore/KeyStoreInstance.ts","../JsStore/enums.ts","../JsStore/interfaces.ts","../JsStore/CommonLogic.ts","../JsStore/UtilsLogic.ts","../JsStore/HelperLogic.ts","../JsStore/Model/Column.ts","../JsStore/Model/Table.ts","../JsStore/Model/DataBase.ts","../JsStore/Business/BaseHelperLogic.ts","../JsStore/Business/BaseLogic.ts","../JsStore/Business/CreateDbLogic.ts","../JsStore/Business/DropDbLogic.ts","../JsStore/Business/InsertHelperLogic.ts","../JsStore/Business/InsertLogic.ts","../JsStore/Business/BulkInsertLogic.ts","../JsStore/Business/OpenDbLogic.ts","../JsStore/Business/ClearLogic.ts","../JsStore/Business/MainLogic.ts","../JsStore/Business/Select/BaseSelectLogic.ts","../JsStore/Business/Select/NotWhereLogic.ts","../JsStore/Business/Select/InLogic.ts","../JsStore/Business/Select/LikeLogic.ts","../JsStore/Business/Select/WhereLogic.ts","../JsStore/Business/Select/JoinLogic.ts","../JsStore/Business/Select/GroupByHelperLogic.ts","../JsStore/Business/Select/HelperLogic.ts","../JsStore/Business/Select/InstanceLogic.ts","../JsStore/Business/Count/BaseCountLogic.ts","../JsStore/Business/Count/NotWhereLogic.ts","../JsStore/Business/Count/InLogic.ts","../JsStore/Business/Count/LikeLogic.ts","../JsStore/Business/Count/WhereLogic.ts","../JsStore/Business/Count/InstanceLogic.ts","../JsStore/Business/Update/BaseUpdateLogic.ts","../JsStore/Business/Update/NotWhereLogic.ts","../JsStore/Business/Update/InLogic.ts","../JsStore/Business/Update/LikeLogic.ts","../JsStore/Business/Update/WhereLogic.ts","../JsStore/Business/Update/InstanceLogic.ts","../JsStore/Business/Delete/BaseDeleteLogic.ts","../JsStore/Business/Delete/NotWhereLogic.ts","../JsStore/Business/Delete/InLogic.ts","../JsStore/Business/Delete/LikeLogic.ts","../JsStore/Business/Delete/WhereLogic.ts","../JsStore/Business/Delete/InstanceLogic.ts","../JsStore/CodeExecutionHelper.ts","../JsStore/JsStoreInstance.ts","../JsStore/DirectCode.ts"],"names":[],"mappings":"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","sourcesContent":["/** \r\n * @license :JsStore.js - v1.3.1 - 30/11/2017\r\n * https://github.com/ujjwalguptaofficial/JsStore\r\n * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */","module KeyStore {\r\n export interface IError {\r\n Name: string,\r\n Value: string\r\n }\r\n export class Utils {\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf UtilityLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else if (!self.alert) {\r\n console.log('worked failed');\r\n (self as any).postMessage('message:WorkerFailed');\r\n }\r\n else {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbUndefined\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n Where: any\r\n }\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_connected\"\r\n }\r\n\r\n export interface KeyStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IInsert {\r\n TableName: string,\r\n Set: {\r\n Key: string,\r\n Value; any\r\n }\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export var RequestQueue: Array = [],\r\n TableName = \"LocalStore\",\r\n IsCodeExecuting = false;\r\n\r\n}","module KeyStore {\r\n export var prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n RequestQueue.push(request);\r\n if (RequestQueue.length == 1) {\r\n executeCode();\r\n }\r\n }\r\n\r\n export var executeCode = function () {\r\n if (!IsCodeExecuting && RequestQueue.length > 0) {\r\n IsCodeExecuting = true;\r\n var Request = {\r\n Name: RequestQueue[0].Name,\r\n Query: RequestQueue[0].Query\r\n }\r\n executeCodeDirect(Request);\r\n }\r\n }\r\n\r\n export var executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n export var processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = RequestQueue.shift();\r\n IsCodeExecuting = false;\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n else {\r\n console.log(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n\r\n}","module KeyStore {\r\n export module Business {\r\n export class Base {\r\n Results = null;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n\r\n protected onErrorOccured = function (e) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n this.OnError((e as any).target.error);\r\n }\r\n }\r\n console.error(e);\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export class Get extends Base {\r\n Query: ISelect;\r\n\r\n private get = function () {\r\n var That: Get = this,\r\n getData = function (column, value) {\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n That.Results = Cursor.value['Value'];\r\n }\r\n }\r\n }\r\n\r\n for (var column in this.Query.Where) {\r\n getData(column, this.Query.Where[column]);\r\n break;\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess(That.Results);\r\n }\r\n }\r\n this.get();\r\n\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Set extends Base {\r\n\r\n private setData = function (value) {\r\n var That: Set = this,\r\n updateIfExistElseInsert = function () {\r\n var CursorOpenRequest = That.ObjectStore.index('Key').openCursor(IDBKeyRange.only(value['Key']));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.value['Value'] = value['Value'];\r\n Cursor.update(Cursor.value);\r\n }\r\n else {\r\n insertData();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n },\r\n insertData = function () {\r\n var AddResult = That.ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n updateIfExistElseInsert();\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.TableName], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.TableName);\r\n this.Transaction.oncomplete = function (e) {\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n this.setData(query.Set);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class Remove extends Base {\r\n Query: IDelete;\r\n RowAffected: number = 0;\r\n private remove = function () {\r\n var That = this,\r\n removeData = function (column, value) {\r\n\r\n var CursorOpenRequest = That.ObjectStore.index(column).openCursor(IDBKeyRange.only(value));\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n };\r\n CursorOpenRequest.onsuccess = function (e) {\r\n var Cursor: IDBCursorWithValue = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n for (var Column in this.Query.Where) {\r\n if (!That.ErrorOccured) {\r\n removeData(Column, That.Query.Where[Column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n\r\n this.Transaction.oncomplete = function () {\r\n if (onSuccess != null) {\r\n onSuccess(That.RowAffected);\r\n }\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n this.remove();\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n export module Business {\r\n export class InitDb {\r\n constructor(dbName: string, tableName: string, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbRequest = self.indexedDB.open(dbName, 1);\r\n\r\n DbRequest.onerror = function (event) {\r\n if ((event as any).target.error.name == 'InvalidStateError') {\r\n JsStore.Status = {\r\n ConStatus: JsStore.ConnectionStatus.UnableToStart,\r\n LastError: JsStore.ErrorType.IndexedDbBlocked,\r\n }\r\n }\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result,\r\n Column = \"Key\";\r\n db.createObjectStore(tableName, {\r\n keyPath: Column\r\n }).createIndex(Column, Column, { unique: true });\r\n }\r\n }\r\n }\r\n }\r\n}","module KeyStore {\r\n export module Business {\r\n export var DbConnection,\r\n Status: KeyStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n };\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n if (request.Name == 'create_db' || request.Name == 'open_db') {\r\n this.executeLogic(request);\r\n }\r\n else {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n this.executeLogic(request);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n var That = this;\r\n setTimeout(function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n else if (Status.ConStatus == ConnectionStatus.Closed) {\r\n var That = this;\r\n this.createDb(TableName, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'get':\r\n this.get(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'set': this.set(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'remove': this.remove(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError); break;\r\n }\r\n }\r\n\r\n public set = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n var ObjInsert = new Set(query, onSuccess, onError);\r\n }\r\n\r\n public remove = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n var ObjDelete = new Remove(query, onSuccess, onError);\r\n }\r\n\r\n public get = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n new Get(query, onSuccess, onError);\r\n }\r\n\r\n public createDb = function (tableName, onSuccess: Function, onError: Function) {\r\n var DbName = \"KeyStore\";\r\n new InitDb(DbName, tableName, onSuccess, onError);\r\n }\r\n }\r\n }\r\n}\r\n","module KeyStore {\r\n /**\r\n * Initialize KeyStore\r\n * \r\n */\r\n export var init = function () {\r\n Utils.setDbType();\r\n if (indexedDB) {\r\n prcoessExecutionOfCode({\r\n Name: 'create_db',\r\n Query: TableName\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * return the value by key\r\n * \r\n * @param {string} key \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n */\r\n export var get = function (key: string, onSuccess: Function, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n };\r\n prcoessExecutionOfCode({\r\n Name: 'get',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * insert or update value\r\n * \r\n * @param {any} key \r\n * @param {any} value \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var set = function (key, value, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n TableName: this.TableName,\r\n Set: {\r\n Key: key,\r\n Value: value\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'set',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * delete value\r\n * \r\n * @param {string} key \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n */\r\n export var remove = function (key: string, onSuccess: Function = null, onError: Function = null) {\r\n var Query = {\r\n From: this.TableName,\r\n Where: {\r\n Key: key\r\n }\r\n }\r\n prcoessExecutionOfCode({\r\n Name: 'remove',\r\n Query: Query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n });\r\n return this;\r\n }\r\n}\r\n","module JsStore {\r\n export enum ErrorType {\r\n UndefinedColumn = \"undefined_column\",\r\n UndefinedValue = \"undefined_value\",\r\n UndefinedColumnName = \"undefined_column_name\",\r\n UndefinedColumnValue = \"undefined_column_value\",\r\n NotArray = \"not_array\",\r\n NoValueSupplied = \"no_value_supplied\",\r\n ColumnNotExist = \"column_not_exist\",\r\n InvalidOp = \"invalid_operator\",\r\n NullValue = \"null_value\",\r\n BadDataType = \"bad_data_type\",\r\n NextJoinNotExist = \"next_join_not_exist\",\r\n TableNotExist = \"table_not_exist\",\r\n DbNotExist = \"db_not_exist\",\r\n IndexedDbUndefined = \"indexeddb_undefined\",\r\n IndexedDbBlocked = \"indexeddb_blocked\"\r\n }\r\n\r\n export enum Occurence {\r\n First = 'f',\r\n Last = 'l',\r\n Any = 'a'\r\n };\r\n\r\n export enum WebWorkerStatus {\r\n Registered = \"registerd\",\r\n Failed = \"failed\",\r\n NotStarted = \"not_started\"\r\n };\r\n\r\n export enum ConnectionStatus {\r\n Connected = \"connected\",\r\n Closed = \"closed\",\r\n NotStarted = \"not_started\",\r\n UnableToStart = \"unable_to_start\"\r\n }\r\n\r\n export enum WhereQryOption {\r\n In = \"In\",\r\n Like = \"Like\",\r\n Or = \"Or\"\r\n }\r\n\r\n export enum DataType {\r\n String = \"string\",\r\n Object = \"object\",\r\n Array = \"array\"\r\n }\r\n}","module JsStore {\r\n export interface DbInfo {\r\n DbName: string,\r\n Table: {\r\n Name: string,\r\n Version: number\r\n }\r\n }\r\n\r\n export interface ISelect {\r\n From: any,\r\n Where: any,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n Order: IOrder,\r\n GroupBy: any,\r\n Aggregate: {\r\n Max: any,\r\n Min: any,\r\n Count: any,\r\n Sum: any,\r\n Avg: any\r\n },\r\n IgnoreCase: boolean,\r\n Distinct: boolean\r\n }\r\n\r\n export interface IOrder {\r\n By: string, // Column name\r\n Type: string\r\n }\r\n\r\n export interface ICount {\r\n From: any,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IDelete {\r\n From: string,\r\n IgnoreCase: boolean,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IUpdate {\r\n In: string,\r\n IgnoreCase: boolean,\r\n Set: any,\r\n Where: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IInsert {\r\n Into: string,\r\n Values: Array,\r\n Return: boolean,\r\n OnSuccess: Function,\r\n OnError: Function,\r\n SkipDataCheck\r\n }\r\n\r\n export interface ICondition {\r\n Column: string,\r\n Value: string,\r\n Op: string\r\n }\r\n\r\n export interface ITableJoin {\r\n Column: string,\r\n Table: string,\r\n Where: any,\r\n Order: IOrder\r\n JoinType: string,\r\n NextJoin: INextJoin\r\n }\r\n\r\n export interface ISelectJoin {\r\n From: IJoin, //IJoin\r\n Count: boolean,\r\n Skip: number,\r\n Limit: number,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IJoin {\r\n Table1: ITableJoin,\r\n Join: string, //inner,left,right,outer\r\n Table2: ITableJoin\r\n }\r\n\r\n export interface INextJoin {\r\n Table: string,\r\n Column: string\r\n }\r\n\r\n export interface JsStoreStatus {\r\n ConStatus: ConnectionStatus,\r\n LastError: string\r\n }\r\n\r\n export interface IWebWorkerRequest {\r\n Name: string,\r\n Query: any,\r\n OnSuccess: Function,\r\n OnError: Function\r\n }\r\n\r\n export interface IWebWorkerResult {\r\n ErrorOccured: boolean;\r\n ErrorDetails: any;\r\n ReturnedValue: any;\r\n }\r\n\r\n export interface IError {\r\n Name: string,\r\n Message: string\r\n }\r\n\r\n export interface IAggregate {\r\n Max: Array,\r\n Min: Array,\r\n Sum: Array,\r\n Count: Array,\r\n Avg: Array\r\n }\r\n\r\n\r\n}","module JsStore {\r\n export var EnableLog = false,\r\n DbVersion: number = 0,\r\n Status: JsStoreStatus = {\r\n ConStatus: ConnectionStatus.NotStarted,\r\n LastError: \"\"\r\n },\r\n TempResults: Array = [];\r\n\r\n export var throwError = function (error) {\r\n throw error;\r\n }\r\n\r\n export var getObjectFirstKey = function (value) {\r\n for (var key in value) {\r\n return key;\r\n }\r\n return null;\r\n }\r\n\r\n export var log = function (msg) {\r\n if (EnableLog) {\r\n console.log(msg);\r\n }\r\n }\r\n\r\n export var logError = function (msg) {\r\n if (EnableLog) {\r\n console.error(msg);\r\n }\r\n }\r\n}","module JsStore {\r\n export class Utils {\r\n static getError(errorType: ErrorType, errorDetail: any) {\r\n var Error: IError = {\r\n Name: errorType,\r\n Message: ''\r\n };\r\n switch (errorType) {\r\n case ErrorType.NotArray: Error.Message = \"Supplied value is not an array\"; break;\r\n case ErrorType.UndefinedColumn: Error.Message = \"Column is undefined in Where\"; break;\r\n case ErrorType.UndefinedValue: Error.Message = \"Value is undefined in Where\"; break;\r\n case ErrorType.UndefinedColumnName: Error.Message = \"Column name is undefined\"; break;\r\n case ErrorType.UndefinedColumnValue: Error.Message = \"Column value is undefined\"; break;\r\n case ErrorType.NoValueSupplied: Error.Message = \"No value supplied\"; break;\r\n case ErrorType.InvalidOp: Error.Message = \"Invalid Op Value '\" + errorDetail['Op'] + \"'\"; break;\r\n case ErrorType.ColumnNotExist: Error.Message = \"Column '\" + errorDetail['ColumnName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.NullValue: Error.Message = \"Null value is not allowed for column '\" + errorDetail['ColumnName'] + \"'\";\r\n break;\r\n case ErrorType.BadDataType: Error.Message = \"Supplied value for column '\" + errorDetail['ColumnName'] + \"' does not have valid type\";\r\n break;\r\n case ErrorType.NextJoinNotExist: Error.Message = \"Next join details not supplied\";\r\n break;\r\n case ErrorType.TableNotExist: Error.Message = \"Table '\" + errorDetail['TableName'] + \"' does not exist\";\r\n break;\r\n case ErrorType.DbNotExist: Error.Message = \"Database '\" + errorDetail['DbName'] + \"' does not exist\";\r\n break;\r\n default: console.error('the error type is not defined');\r\n }\r\n return Error;\r\n }\r\n\r\n static convertObjectintoLowerCase(obj: any) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n];\r\n obj[key.toLowerCase()] = obj[key]\r\n delete obj[key]\r\n }\r\n }\r\n\r\n /**\r\n * determine and set the DataBase Type\r\n * \r\n * \r\n * @memberOf MainLogic\r\n */\r\n static setDbType = function () {\r\n (self as any).indexedDB = self.indexedDB || (self as any).mozIndexedDB || (self as any).webkitIndexedDB || (self as any).msIndexedDB;\r\n if (indexedDB) {\r\n (self as any).IDBTransaction = (self as any).IDBTransaction || (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\r\n (self as any).IDBKeyRange = (self as any).IDBKeyRange || (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange\r\n }\r\n else {\r\n throwError('Your browser doesnot support IndexedDb');\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n\r\n /**\r\n * checks whether db exist or not\r\n * \r\n * @param {DbInfo} dbInfo \r\n * @param {Function} callback \r\n * @param {Function} errCallBack \r\n */\r\n export var isDbExist = function (dbInfo: DbInfo, callback: Function, errCallBack: Function = null) {\r\n var UsePromise = callback ? false : true;\r\n if (Status.ConStatus != ConnectionStatus.UnableToStart) {\r\n var DbName;\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n resolve(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n resolve(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n })\r\n }\r\n else {\r\n if (typeof dbInfo == 'string') {\r\n getDbVersion(dbInfo, function (dbVersion) {\r\n callback(Boolean(dbVersion));\r\n });\r\n }\r\n else {\r\n getDbVersion(dbInfo.DbName, function (dbVersion) {\r\n callback(dbInfo.Table.Version <= dbVersion)\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n var Error = {\r\n Name: Status.LastError,\r\n Message: ''\r\n };\r\n switch (Error.Name) {\r\n case ErrorType.IndexedDbBlocked:\r\n Error.Message = \"IndexedDB is blocked\"; break;\r\n case ErrorType.IndexedDbUndefined:\r\n Error.Message = \"IndexedDB is not supported\"; break;\r\n }\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n reject(Error);\r\n });\r\n }\r\n else if (errCallBack) {\r\n errCallBack(Error);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * get Db Version\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbVersion = function (dbName: string, callback: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n callback(Number(dbVersion));\r\n });\r\n }\r\n\r\n /**\r\n * get Database Schema\r\n * \r\n * @param {string} dbName \r\n * @param {Function} callback \r\n */\r\n export var getDbSchema = function (dbName: string, callback: Function) {\r\n if (callback) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n callback(result);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * check value null or not\r\n * \r\n * @param {any} value \r\n * @returns \r\n */\r\n export var isNull = function (value) {\r\n if (value == null) {\r\n return true;\r\n } else {\r\n switch (typeof value) {\r\n case 'string': return value.length == 0;\r\n case 'number': return isNaN(value);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Enable log\r\n * \r\n */\r\n export var enableLog = function () {\r\n EnableLog = true;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * disable log\r\n * \r\n */\r\n export var disableLog = function () {\r\n EnableLog = false;\r\n if (WorkerInstance) {\r\n WorkerInstance.postMessage({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export module Model {\r\n\r\n export interface IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n }\r\n\r\n export class Column implements IColumn {\r\n Name: string;\r\n AutoIncrement: boolean;\r\n PrimaryKey: boolean;\r\n Unique: boolean;\r\n NotNull: boolean;\r\n DataType: string;\r\n Default: any;\r\n\r\n constructor(key: IColumn, tableName: string) {\r\n if (key.Name != null) {\r\n this.Name = key.Name;\r\n }\r\n else {\r\n throwError(\"Column Name is not defined for table:\" + tableName);\r\n }\r\n this.AutoIncrement = key.AutoIncrement != null ? key.AutoIncrement : false;\r\n this.PrimaryKey = key.PrimaryKey != null ? key.PrimaryKey : false;\r\n this.Unique = key.Unique != null ? key.Unique : false;\r\n this.NotNull = key.NotNull != null ? key.NotNull : false;\r\n this.DataType = key.DataType != null ? key.DataType : (key.AutoIncrement ? 'number' : null);\r\n this.Default = key.Default;\r\n }\r\n\r\n }\r\n\r\n }\r\n}\r\n","\r\nmodule JsStore {\r\n\r\n export module Model {\r\n\r\n export interface ITable {\r\n Name: string;\r\n Columns: Array;\r\n Version: number;\r\n }\r\n\r\n export class Table implements ITable {\r\n Name: string = \"\";\r\n Columns: Array = [];\r\n Version: number;\r\n //internal Members\r\n RequireDelete: boolean = false;\r\n RequireCreation: boolean = false;\r\n PrimaryKey: string = \"\";\r\n\r\n constructor(table: ITable, dbName: string) {\r\n this.Name = table.Name;\r\n this.Version = table.Version == undefined ? 1 : table.Version;\r\n var That = this;\r\n table.Columns.forEach(function (item) {\r\n That.Columns.push(new Column(item, table.Name));\r\n })\r\n\r\n this.setRequireDelete(dbName);\r\n this.setDbVersion(dbName);\r\n this.setPrimaryKey(dbName);\r\n }\r\n\r\n //private methods\r\n\r\n private setPrimaryKey(dbName) {\r\n var That = this;\r\n this.Columns.forEach(function (item) {\r\n if (item.PrimaryKey) {\r\n That.PrimaryKey = item.Name;\r\n }\r\n })\r\n\r\n }\r\n\r\n private setRequireDelete(dbName: string) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dbName + \"_\" + this.Name + \"_Version\", function (tableVersion) {\r\n if (tableVersion == null) {\r\n That.RequireCreation = true;\r\n }\r\n //mark only table which has version greater than store version\r\n else if (tableVersion < That.Version) {\r\n That.RequireDelete = true;\r\n }\r\n });\r\n }\r\n\r\n private setDbVersion(dbName: string) {\r\n var That = this;\r\n DbVersion = DbVersion > That.Version ? DbVersion : That.Version;\r\n //setting db version\r\n KeyStore.set('JsStore_' + dbName + '_Db_Version', DbVersion)\r\n //setting table version\r\n .set(\"JsStore_\" + dbName + \"_\" + That.Name + \"_Version\", DbVersion);\r\n That.Version = DbVersion;\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n","\r\nmodule JsStore {\r\n export module Model {\r\n export interface IDataBase {\r\n Name: string;\r\n Tables: Array;\r\n }\r\n\r\n export class DataBase implements IDataBase {\r\n Name: string;\r\n Tables: Array
= [];\r\n\r\n constructor(dataBase: IDataBase) {\r\n var That = this;\r\n this.Name = dataBase.Name;\r\n dataBase.Tables.forEach(function (item) {\r\n That.Tables.push(new Table(item, That.Name));\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BaseHelper {\r\n\r\n protected getTable = function (tableName: string) {\r\n var CurrentTable: Table,\r\n That = this;\r\n ActiveDataBase.Tables.every(function (table) {\r\n if (table.Name == tableName) {\r\n CurrentTable = table;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return CurrentTable;\r\n }\r\n\r\n protected getKeyRange = function (value, op) {\r\n var KeyRange: IDBKeyRange;\r\n switch (op) {\r\n case '-': KeyRange = IDBKeyRange.bound(value.Low, value.High, false, false); break;\r\n case '>': KeyRange = IDBKeyRange.lowerBound(value, true); break;\r\n case '>=': KeyRange = IDBKeyRange.lowerBound(value); break;\r\n case '<': KeyRange = IDBKeyRange.upperBound(value, true); break;\r\n case '<=': KeyRange = IDBKeyRange.upperBound(value); break;\r\n default: KeyRange = IDBKeyRange.only(value); break;\r\n }\r\n return KeyRange;\r\n\r\n }\r\n\r\n protected getObjectSecondKey = function (value) {\r\n var IsSecond = false;\r\n for (var key in value) {\r\n if (IsSecond) {\r\n return key;\r\n }\r\n else {\r\n IsSecond = true;\r\n }\r\n }\r\n }\r\n\r\n protected getPrimaryKey = function (tableName) {\r\n var PrimaryKey = this.getTable(tableName).PrimaryKey\r\n return PrimaryKey ? PrimaryKey : this.getKeyPath();\r\n };\r\n\r\n private getKeyPath = function (tableName) {\r\n var Transaction: IDBTransaction = DbConnection.transaction([tableName], \"readonly\"),\r\n ObjectStore = Transaction.objectStore(tableName);\r\n return ObjectStore.keyPath;\r\n }\r\n\r\n protected sortNumberInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a - b;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortNumberInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b - a;\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInAsc = function (values) {\r\n values.sort(function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n return values;\r\n }\r\n\r\n protected sortAlphabetInDesc = function (values) {\r\n values.sort(function (a, b) {\r\n return b.toLowerCase().localeCompare(a.toLowerCase());\r\n });\r\n return values;\r\n };\r\n\r\n private getCombination(word: string) {\r\n var Results = [],\r\n doAndPushCombination = function (word: string, chars, index: number) {\r\n if (index == word.length) {\r\n Results.push(chars.join(\"\"));\r\n } else {\r\n var ch = word.charAt(index);\r\n chars[index] = ch.toLowerCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n chars[index] = ch.toUpperCase();\r\n doAndPushCombination(word, chars, index + 1);\r\n }\r\n };\r\n doAndPushCombination(word, [], 0);\r\n return Results;\r\n }\r\n\r\n protected getAllCombinationOfWord(word, isArray) {\r\n if (isArray) {\r\n var Results = [];\r\n for (var i = 0, length = word.length; i < length; i++) {\r\n Results = Results.concat(this.getCombination(word[i]))\r\n }\r\n return Results;\r\n }\r\n else {\r\n return this.getCombination(word);\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Base extends BaseHelper {\r\n Error: IError;\r\n ErrorOccured: boolean = false;\r\n ErrorCount = 0;\r\n RowAffected = 0;\r\n OnSuccess: Function;\r\n OnError: Function;\r\n Transaction: IDBTransaction;\r\n ObjectStore: IDBObjectStore;\r\n Query;\r\n SendResultFlag: Boolean = true;\r\n\r\n protected onErrorOccured = function (e, customError = false) {\r\n ++this.ErrorCount;\r\n if (this.ErrorCount == 1) {\r\n if (this.OnError != null) {\r\n if (!customError) {\r\n var Error = {\r\n Name: (e as any).target.error.name,\r\n Message: (e as any).target.error.message\r\n }\r\n this.OnError(Error);\r\n }\r\n else {\r\n this.OnError(e);\r\n }\r\n logError(Error);\r\n }\r\n }\r\n }\r\n\r\n protected onTransactionTimeout = function (e) {\r\n console.log('transaction timed out');\r\n }\r\n\r\n protected onExceptionOccured = function (ex: DOMException, info) {\r\n switch (ex.name) {\r\n case 'NotFoundError':\r\n var Error = Utils.getError(ErrorType.TableNotExist, info);\r\n throwError(Error);\r\n default: console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * For matching the different column value existance\r\n * \r\n * @private\r\n * @param {any} where \r\n * @param {any} value \r\n * @returns \r\n * \r\n * @memberOf SelectLogic\r\n */\r\n protected checkForWhereConditionMatch(rowValue) {\r\n var Where = this.Query.Where,\r\n Status = true;\r\n var checkIn = function (column, value) {\r\n var Values = Where[column].In;\r\n for (var i = 0, length = Values.length; i < length; i++) {\r\n if (Values[i] == value) {\r\n Status = true;\r\n break;\r\n }\r\n else {\r\n Status = false;\r\n }\r\n };\r\n },\r\n checkLike = function (column, value) {\r\n var Values = Where[column].Like.split('%'),\r\n CompSymbol: Occurence,\r\n CompValue,\r\n SymbolIndex;\r\n if (Values[1]) {\r\n CompValue = Values[1];\r\n CompSymbol = Values.length > 2 ? Occurence.Any : Occurence.Last;\r\n }\r\n else {\r\n CompValue = Values[0];\r\n CompSymbol = Occurence.First;\r\n }\r\n value = value.toLowerCase();\r\n\r\n switch (CompSymbol) {\r\n case Occurence.Any:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n case Occurence.First:\r\n SymbolIndex = value.indexOf(CompValue.toLowerCase());\r\n if (SymbolIndex > 0 || SymbolIndex < 0) {\r\n Status = false;\r\n }; break;\r\n default:\r\n SymbolIndex = value.lastIndexOf(CompValue.toLowerCase());\r\n if (SymbolIndex < value.length - CompValue.length) {\r\n Status = false;\r\n };\r\n }\r\n },\r\n checkComparisionOp = function (column, value, symbol) {\r\n var CompareValue = Where[column][symbol];\r\n switch (symbol) {\r\n //greater than\r\n case '>': if (value <= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than\r\n case '<': if (value >= CompareValue) {\r\n Status = false;\r\n }; break;\r\n //less than equal\r\n case '<=': if (value > CompareValue) {\r\n Status = false;\r\n }; break;\r\n //greather than equal\r\n case '>=': if (value < CompareValue) {\r\n Status = false;\r\n }; break;\r\n //between\r\n case '-': if (value < CompareValue.Low || value > CompareValue.High) {\r\n Status = false;\r\n }; break;\r\n }\r\n };\r\n for (var Column in Where) {\r\n var ColumnValue = Where[Column];\r\n if (Status) {\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n if (Status) {\r\n switch (key) {\r\n case 'In': checkIn(Column, rowValue[Column]); break;\r\n case 'Like': checkLike(Column, rowValue[Column]); break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n checkComparisionOp(Column, rowValue[Column], key); break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n var CompareValue = rowValue[Column];\r\n if (ColumnValue != CompareValue) {\r\n Status = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return Status;\r\n }\r\n\r\n protected goToWhereLogic = function () {\r\n var Column = getObjectFirstKey(this.Query.Where);\r\n if (this.Query.IgnoreCase === true) {\r\n this.Query.Where = this.makeQryInCaseSensitive(this.Query.Where);\r\n }\r\n if (this.ObjectStore.indexNames.contains(Column)) {\r\n var Value = this.Query.Where[Column];\r\n if (typeof Value == 'object') {\r\n this.CheckFlag = Boolean(Object.keys(Value).length > 1 || Object.keys(this.Query.Where).length > 1);\r\n var Key = getObjectFirstKey(Value);\r\n switch (Key) {\r\n case 'Like': {\r\n var FilterValue = Value.Like.split('%');\r\n if (FilterValue[1]) {\r\n if (FilterValue.length > 2) {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Any);\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[1], Occurence.Last);\r\n }\r\n }\r\n else {\r\n this.executeLikeLogic(Column, FilterValue[0], Occurence.First);\r\n }\r\n }; break;\r\n case 'In':\r\n this.executeInLogic(Column, Value['In']);\r\n break;\r\n case '-':\r\n case '>':\r\n case '<':\r\n case '>=':\r\n case '<=':\r\n this.executeWhereLogic(Column, Value, Key);\r\n break;\r\n case 'Aggregate': break;\r\n default: this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.CheckFlag = Boolean(Object.keys(this.Query.Where).length > 1);\r\n this.executeWhereLogic(Column, Value);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n this.Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: Column });\r\n throwError(this.Error);\r\n }\r\n }\r\n\r\n protected makeQryInCaseSensitive = function (qry) {\r\n var Results = [],\r\n ColumnValue,\r\n KeyValue;\r\n for (var column in qry) {\r\n ColumnValue = qry[column];\r\n if (typeof ColumnValue == 'object') {\r\n for (var key in ColumnValue) {\r\n KeyValue = ColumnValue[key]\r\n switch (key) {\r\n case WhereQryOption.In:\r\n Results = Results.concat(this.getAllCombinationOfWord(KeyValue, true));\r\n break;\r\n case WhereQryOption.Like:\r\n break;\r\n default:\r\n Results = Results.concat(this.getAllCombinationOfWord(KeyValue));\r\n }\r\n }\r\n qry[column]['In'] = Results;\r\n }\r\n else {\r\n Results = Results.concat(this.getAllCombinationOfWord(ColumnValue));\r\n qry[column] = {\r\n In: Results\r\n }\r\n }\r\n\r\n }\r\n\r\n return qry;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class CreateDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n var That = this,\r\n DbCreatedList = [],\r\n DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion);\r\n\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess(DbCreatedList);\r\n }\r\n //save dbSchema in keystore\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\", ActiveDataBase);\r\n };\r\n\r\n DbRequest.onupgradeneeded = function (event) {\r\n var db = (event).target.result;\r\n ActiveDataBase.Tables.forEach(function (item) {\r\n if (item.RequireDelete) {\r\n // Delete the old datastore. \r\n if (db.objectStoreNames.contains(item.Name)) {\r\n db.deleteObjectStore(item.Name);\r\n }\r\n createObjectStore(db, item);\r\n }\r\n else if (item.RequireCreation) {\r\n createObjectStore(db, item);\r\n }\r\n })\r\n\r\n }\r\n\r\n var createObjectStore = function (dbConnection, item: Table) {\r\n try {\r\n if (item.PrimaryKey.length > 0) {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n keyPath: item.PrimaryKey\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n if (column.PrimaryKey) {\r\n Store.createIndex(column.Name, column.Name, { unique: true });\r\n }\r\n else {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n }\r\n\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n else {\r\n var Store = dbConnection.createObjectStore(item.Name, {\r\n autoIncrement: true\r\n });\r\n item.Columns.forEach(function (column: Column) {\r\n Store.createIndex(column.Name, column.Name, { unique: column.Unique });\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n })\r\n }\r\n DbCreatedList.push(item.Name);\r\n //setting the table version\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + item.Name + \"_Version\", item.Version);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class DropDb {\r\n constructor(name: string, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n DbConnection.close();\r\n setTimeout(function () {\r\n That.deleteDb(name, onSuccess, onError);\r\n }, 100);\r\n }\r\n\r\n deleteDb = function (name: string, onSuccess: Function, onError: Function) {\r\n var DbDropRequest = indexedDB.deleteDatabase(name);\r\n DbDropRequest.onblocked = function () {\r\n if (onError != null) {\r\n onError(\"database is blocked, cant be deleted right now.\");\r\n };\r\n };\r\n DbDropRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n }\r\n DbDropRequest.onsuccess = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n KeyStore.remove('JsStore_' + ActiveDataBase.Name + '_Db_Version');\r\n ActiveDataBase.Tables.forEach(function (table: Model.Table) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_Version\");\r\n table.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_\" + table.Name + \"_\" + column.Name + \"_Value\");\r\n }\r\n });\r\n });\r\n KeyStore.remove(\"JsStore_\" + ActiveDataBase.Name + \"_Schema\");\r\n onSuccess();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class InsertHelper extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n protected checkModifyInsertValues = function (table, values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n Value,\r\n TableName = table.Name,\r\n checkDatas = function () {\r\n Value = values[ValueIndex++];\r\n checkInternal();\r\n },\r\n checkInternal = function () {\r\n if (Value) {\r\n checkAndModifyValue();\r\n }\r\n else {\r\n That.insertData(values);\r\n }\r\n },\r\n checkAndModifyValue = function () {\r\n var Index = 0,\r\n checkAndModifyColumn = function (column) {\r\n if (column) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n },\r\n CheckNotNullAndDataType = function () {\r\n //check not null schema\r\n if (column.NotNull && isNull(Value[column.Name])) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n //check datatype\r\n else if (column.DataType && typeof Value[column.Name] != column.DataType) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n };\r\n if (!That.ErrorOccured) {\r\n //check auto increment scheme\r\n if (column.AutoIncrement) {\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", function (columnValue: number) {\r\n Value[column.Name] = ++columnValue;\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + TableName + \"_\" + column.Name + \"_Value\", columnValue);\r\n CheckNotNullAndDataType();\r\n });\r\n }\r\n else if (column.Default && Value[column.Name] == null) { //check Default Schema\r\n Value[column.Name] = column.Default;\r\n CheckNotNullAndDataType();\r\n }\r\n else {\r\n CheckNotNullAndDataType();\r\n }\r\n }\r\n else {\r\n That.onErrorOccured(That.Error, true);\r\n }\r\n }\r\n else {\r\n checkDatas();\r\n }\r\n }\r\n checkAndModifyColumn(table.Columns[Index++]);\r\n }\r\n checkDatas();\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Insert extends InsertHelper {\r\n private insertData = function (values) {\r\n var That = this,\r\n ValueIndex = 0,\r\n IsReturn = this.Query.Return,\r\n insertDataintoTable: Function;\r\n if (IsReturn) {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n That.ValuesAffected.push(value);\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n insertDataintoTable = function (value) {\r\n if (value) {\r\n var AddResult = ObjectStore.add(value);\r\n AddResult.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n AddResult.onsuccess = function (e) {\r\n ++That.RowAffected;\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n }\r\n }\r\n }\r\n That.Transaction = DbConnection.transaction([That.Query.Into], \"readwrite\");\r\n var ObjectStore = That.Transaction.objectStore(That.Query.Into);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n }\r\n insertDataintoTable(values[ValueIndex++]);\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var Table = this.getTable(query.Into);\r\n if (Table) {\r\n if (this.Query.SkipDataCheck) {\r\n this.insertData(this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n else {\r\n this.checkModifyInsertValues(Table, this.Query.Values);\r\n //remove values\r\n this.Query.Values = undefined;\r\n }\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class BulkInsert extends Base {\r\n ValuesAffected = [];\r\n Query: IInsert;\r\n ValuesIndex = 0;\r\n Table: Model.ITable;\r\n public onTransactionCompleted = function () {\r\n this.OnSuccess(this.Query.Return ? this.ValuesAffected : this.RowAffected);\r\n }\r\n\r\n private bulkinsertData = function () {\r\n var That = this;\r\n this.Transaction = DbConnection.transaction([this.Query.Into], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(this.Query.Into);\r\n this.Transaction.oncomplete = function (e) {\r\n That.OnSuccess();\r\n }\r\n this.Query.Values.forEach(function (value) {\r\n That.ObjectStore.add(value);\r\n });\r\n }\r\n\r\n constructor(query: IInsert, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n var That = this;\r\n this.Table = this.getTable(query.Into);\r\n if (this.Table) {\r\n this.bulkinsertData();\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: query.Into })\r\n throwError(Error);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.Into });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class OpenDb {\r\n constructor(dbVersion, onSuccess: Function, onError: Function) {\r\n if (ActiveDataBase.Name.length > 0) {\r\n var DbRequest = indexedDB.open(ActiveDataBase.Name, dbVersion),\r\n That = this;\r\n DbRequest.onerror = function (event) {\r\n if (onError != null) {\r\n onError((event as any).target.error);\r\n }\r\n };\r\n\r\n DbRequest.onsuccess = function (event) {\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n DbConnection = DbRequest.result;\r\n DbConnection.onclose = function () {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Closed, trying to reconnect\";\r\n }\r\n\r\n DbConnection.onversionchange = function (e) {\r\n if (e.newVersion === null) { // An attempt is made to delete the db\r\n e.target.close(); // Manually close our connection to the db\r\n }\r\n };\r\n\r\n DbConnection.onerror = function (e) {\r\n Status.LastError = \"Error occured in connection :\" + e.target.result;\r\n }\r\n\r\n DbConnection.onabort = function (e) {\r\n Status.ConStatus = ConnectionStatus.Closed;\r\n Status.LastError = \"Connection Aborted\";\r\n }\r\n\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n };\r\n }\r\n else {\r\n var Error = \"Database name is not supplied.\";\r\n throwError(Error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export class Clear extends Base {\r\n constructor(tableName: string, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this,\r\n ObjectStore: IDBObjectStore = DbConnection.transaction([tableName], \"readwrite\").objectStore(tableName)\r\n , ClearRequest = ObjectStore.clear();\r\n\r\n ClearRequest.onsuccess = function (e) {\r\n var CurrentTable = That.getTable(tableName);\r\n CurrentTable.Columns.forEach(function (column: Column) {\r\n if (column.AutoIncrement) {\r\n KeyStore.set(\"JsStore_\" + ActiveDataBase.Name + \"_\" + tableName + \"_\" + column.Name + \"_Value\", 0);\r\n }\r\n });\r\n if (onSuccess != null) {\r\n onSuccess();\r\n }\r\n }\r\n\r\n ClearRequest.onerror = function (e) {\r\n if (onError != null) {\r\n onError();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nmodule JsStore {\r\n export module Business {\r\n export var DbConnection,\r\n ActiveDataBase: DataBase;\r\n\r\n\r\n export class Main {\r\n OnSuccess: Function;\r\n constructor(onSuccess = null) {\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n public checkConnectionAndExecuteLogic = function (request: IWebWorkerRequest) {\r\n log('checking connection and executing request:' + request.Name);\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.executeLogic(request);\r\n break;\r\n case 'change_log_status':\r\n this.changeLogStatus(request);\r\n default:\r\n switch (Status.ConStatus) {\r\n case ConnectionStatus.Connected: {\r\n this.executeLogic(request);\r\n }; break;\r\n case ConnectionStatus.Closed: {\r\n var That = this;\r\n this.openDb(ActiveDataBase.Name, function () {\r\n That.checkConnectionAndExecuteLogic(request);\r\n });\r\n }; break;\r\n }\r\n }\r\n }\r\n\r\n private changeLogStatus = function (request) {\r\n if (request.Query['logging'] === true) {\r\n EnableLog = true;\r\n }\r\n else {\r\n EnableLog = false;\r\n }\r\n }\r\n\r\n private returnResult = function (result) {\r\n if (this.OnSuccess) {\r\n this.OnSuccess(result);\r\n }\r\n else {\r\n (self as any).postMessage(result);\r\n }\r\n }\r\n\r\n private executeLogic = function (request: IWebWorkerRequest) {\r\n var That = this,\r\n OnSuccess = function (results) {\r\n That.returnResult({\r\n ReturnedValue: results\r\n });\r\n },\r\n OnError = function (err) {\r\n That.returnResult({\r\n ErrorOccured: true,\r\n ErrorDetails: err\r\n });\r\n }\r\n\r\n switch (request.Name) {\r\n case 'select':\r\n this.select(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'insert': this.insert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'update': this.update(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'delete': this.delete(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'open_db': this.openDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'create_db': this.createDb(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'clear': this.clear(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'drop_db': this.dropDb(OnSuccess, OnError);\r\n break;\r\n case 'count': this.count(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'bulk_insert': this.bulkInsert(request.Query, OnSuccess, OnError);\r\n break;\r\n case 'export_json': this.exportJson(request.Query, OnSuccess, OnError);\r\n break;\r\n default: console.error('The Api:-' + request.Name + 'does not support');\r\n }\r\n }\r\n\r\n openDb = function (dbName, onSuccess: Function, onError: Function) {\r\n KeyStore.get(\"JsStore_\" + dbName + '_Db_Version', function (dbVersion) {\r\n if (dbVersion != null) {\r\n KeyStore.get(\"JsStore_\" + dbName + \"_Schema\", function (result) {\r\n ActiveDataBase = result;\r\n new OpenDb(dbVersion, onSuccess, onError);\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.DbNotExist, { DbName: dbName });\r\n throw Error;\r\n }\r\n });\r\n }\r\n\r\n public closeDb = function () {\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n DbConnection.close();\r\n }\r\n }\r\n\r\n public dropDb = function (onSuccess: Function, onError: Function) {\r\n new DropDb(ActiveDataBase.Name, onSuccess, onError);\r\n }\r\n\r\n public update = function (query: IUpdate, onSuccess: Function, onError: Function) {\r\n new Update.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public insert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new Insert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public bulkInsert = function (query: IInsert, onSuccess: Function, onError: Function) {\r\n if (!Array.isArray(query.Values)) {\r\n throwError(\"Value should be array :- supplied value is not array\");\r\n }\r\n else {\r\n new BulkInsert(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public delete = function (query: IDelete, onSuccess: Function, onError: Function) {\r\n new Delete.Instance(query, onSuccess, onError);\r\n }\r\n\r\n public select = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Select.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public count = function (query, onSuccess: Function, onError: Function) {\r\n if (typeof query.From === 'object') {\r\n query['Count'] = true;\r\n new Select.Join(query, onSuccess, onError);\r\n }\r\n else {\r\n new Count.Instance(query, onSuccess, onError);\r\n }\r\n }\r\n\r\n public createDb = function (dataBase: Model.IDataBase, onSuccess: Function, onError: Function) {\r\n var That = this;\r\n KeyStore.get(\"JsStore_\" + dataBase.Name + \"_Db_Version\", function (version) {\r\n DbVersion = version;\r\n ActiveDataBase = new Model.DataBase(dataBase);\r\n var createDbInternal = function () {\r\n setTimeout(function () {\r\n var LastTable = (ActiveDataBase.Tables[ActiveDataBase.Tables.length - 1]);\r\n KeyStore.get(\"JsStore_\" + ActiveDataBase.Name + \"_\" + LastTable.Name + \"_Version\", function (version) {\r\n if (version == LastTable.Version) {\r\n new CreateDb(DbVersion, onSuccess, onError)\r\n }\r\n else {\r\n createDbInternal();\r\n }\r\n });\r\n }, 200);\r\n }\r\n createDbInternal();\r\n });\r\n\r\n }\r\n\r\n public clear = function (tableName: string, onSuccess: Function, onError: Function) {\r\n new Clear(tableName, onSuccess, onError);\r\n }\r\n\r\n public exportJson = function (query: ISelect, onSuccess: Function, onError: Function) {\r\n this.select(query, function (results) {\r\n var Url = URL.createObjectURL(new Blob([JSON.stringify(results)], {\r\n type: \"text/json\"\r\n }));\r\n onSuccess(Url);\r\n }, function (err) {\r\n onError(err);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class BaseSelect extends Base {\r\n Results = [];\r\n Sorted: boolean = false;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n\r\n protected removeDuplicates = function () {\r\n var Datas = this.Results;\r\n //free results memory\r\n this.Results = undefined;\r\n var Key = this.getPrimaryKey(this.Query.From);\r\n var lookupObject = {};\r\n for (var i in Datas) {\r\n lookupObject[Datas[i][Key]] = Datas[i];\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in lookupObject) {\r\n Datas.push(lookupObject[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class NotWhere extends BaseSelect {\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n },\r\n executeLimit = function () {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n };\r\n\r\n if (this.Query.Order && this.Query.Order.By) {\r\n if (That.ObjectStore.indexNames.contains(this.Query.Order.By)) {\r\n var OrderType = this.Query.Order.Type && this.Query.Order.Type.toLowerCase() == 'desc' ? 'prev' : 'next';\r\n this.Sorted = true;\r\n CursorOpenRequest = this.ObjectStore.index(That.Query.Order.By).openCursor(null, OrderType);\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.ColumnNotExist, { ColumnName: this.Query.Order.By });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class In extends NotWhere {\r\n private executeSkipAndLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n skipOrPush(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkipForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n skipOrPush((Cursor.value));\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeLimitForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeSimpleForIn = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column);\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n this.CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n protected executeInLogic = function (column, values) {\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimitForIn(column, values);\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkipForIn(column, values);\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimitForIn(column, values);\r\n }\r\n else {\r\n this.executeSimpleForIn(column, values);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n private executeSkipAndLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n skipOrPush(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSkip = function () {\r\n var Cursor: IDBCursorWithValue,\r\n Skip = this.SkipRecord,\r\n That = this,\r\n skipOrPush = function (value) {\r\n if (Skip == 0) {\r\n That.Results.push(value);\r\n }\r\n else {\r\n --Skip;\r\n }\r\n };\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n skipOrPush((Cursor.value));\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeLimit = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (That.Results.length != That.LimitRecord && Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private executeSimple = function () {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (this.SkipRecord && this.LimitRecord) {\r\n this.executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n this.executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n this.executeLimit();\r\n }\r\n else {\r\n this.executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this,\r\n CursorOpenRequest,\r\n Cursor: IDBCursorWithValue,\r\n executeSkipAndLimit = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeSkip = function () {\r\n var RecordSkipped = false;\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (RecordSkipped) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n else {\r\n RecordSkipped = true;\r\n Cursor.advance(That.SkipRecord);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n executeLimit = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord && That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor && That.Results.length != That.LimitRecord) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n },\r\n executeSimple = function () {\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n That.Results.push(Cursor.value);\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n That.Results.push(Cursor.value);\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n };\r\n\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (this.SkipRecord && this.LimitRecord) {\r\n executeSkipAndLimit();\r\n }\r\n else if (this.SkipRecord) {\r\n executeSkip();\r\n }\r\n else if (this.LimitRecord) {\r\n executeLimit();\r\n }\r\n else {\r\n executeSimple();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Join extends BaseSelect {\r\n Query: ISelectJoin;\r\n QueryStack: Array = [];\r\n CurrentQueryStackIndex = 0;\r\n\r\n private onTransactionCompleted = function (e) {\r\n if (this.OnSuccess != null && (this.QueryStack.length == this.CurrentQueryStackIndex + 1)) {\r\n if (this.Query['Count']) {\r\n this.OnSuccess(this.Results.length);\r\n }\r\n else {\r\n if (this.Query['Skip'] && this.Query['Limit']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n else if (this.Query['Skip']) {\r\n this.Results.splice(0, this.Query['Skip']);\r\n }\r\n else if (this.Query['Limit']) {\r\n this.Results.splice(this.Query['Limit'] - 1, this.Results.length);\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n\r\n }\r\n }\r\n\r\n private executeWhereJoinLogic = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length;\r\n\r\n //get the data from query table\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n //perform join\r\n results.forEach(function (value, index) {\r\n //search item through each global result\r\n for (var i = 0; i < ResultLength; i++) {\r\n Item = TmpResults[i][joinQuery.Table][joinQuery.Column];\r\n //if (Item == value[query.Column]) {\r\n doJoin(Item, value, i);\r\n //}\r\n }\r\n });\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n\r\n var doJoin = function (value1, value2, itemIndex) {\r\n Results[JoinIndex] = {};\r\n if (value1 == value2[query.Column]) {\r\n Results[JoinIndex][query.Table] = value2;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[itemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n private executeRightJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doRightJoin = function (results) {\r\n var ValueFound = false;\r\n results.forEach(function (item, index) {\r\n for (ItemIndex = 0; ItemIndex < ResultLength; ItemIndex++) {\r\n if (item[query.Column] == TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column]) {\r\n ValueFound = true;\r\n break;\r\n }\r\n }\r\n Results[index] = {};\r\n Results[index][query.Table] = item;\r\n if (ValueFound) {\r\n ValueFound = false;\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[index][That.QueryStack[j].Table] = null;\r\n }\r\n }\r\n });\r\n },\r\n executeLogic = function () {\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: query.Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doRightJoin(results);\r\n onExecutionFinished();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n };\r\n executeLogic();\r\n }\r\n private executeWhereUndefinedLogicForJoin = function (joinQuery: ITableJoin, query: ITableJoin) {\r\n var That = this,\r\n Results = [],\r\n JoinIndex = 0,\r\n Column = query.Column,\r\n TmpResults = That.Results,\r\n Item,\r\n ResultLength = TmpResults.length,\r\n ItemIndex = 0,\r\n Where = {},\r\n onExecutionFinished = function () {\r\n That.Results = Results;\r\n //check if further execution needed\r\n if (That.QueryStack.length > That.CurrentQueryStackIndex + 1) {\r\n That.startExecutionJoinLogic();\r\n }\r\n else {\r\n That.onTransactionCompleted(null);\r\n }\r\n },\r\n doJoin = function (results) {\r\n if (results.length > 0) {\r\n results.forEach(function (value) {\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = value;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n ++JoinIndex;\r\n });\r\n }\r\n else if (query.JoinType == 'left') {\r\n //left join\r\n Results[JoinIndex] = {};\r\n Results[JoinIndex][query.Table] = null;\r\n //copy other relative data into current result\r\n for (var j = 0; j < That.CurrentQueryStackIndex; j++) {\r\n Results[JoinIndex][That.QueryStack[j].Table] = TmpResults[ItemIndex][That.QueryStack[j].Table];\r\n }\r\n //Results[JoinIndex][joinQuery.Table] = TmpResults[ItemIndex][joinQuery.Table];\r\n ++JoinIndex;\r\n }\r\n },\r\n executeLogic = function () {\r\n if (ItemIndex < ResultLength) {\r\n if (!That.ErrorOccured) {\r\n Where[query.Column] = TmpResults[ItemIndex][joinQuery.Table][joinQuery.Column];\r\n new Select.Instance({\r\n From: query.Table,\r\n Where: Where,\r\n Order: query.Order\r\n }, function (results) {\r\n doJoin(results);\r\n ++ItemIndex;\r\n executeLogic();\r\n }, function (error) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n else {\r\n onExecutionFinished();\r\n }\r\n };\r\n executeLogic();\r\n }\r\n\r\n private startExecutionJoinLogic() {\r\n var JoinQuery;\r\n if (this.CurrentQueryStackIndex >= 1 && this.CurrentQueryStackIndex % 2 == 1) {\r\n JoinQuery = {\r\n Table: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,\r\n Column: this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column\r\n }\r\n this.CurrentQueryStackIndex++;\r\n }\r\n else {\r\n JoinQuery = this.QueryStack[this.CurrentQueryStackIndex++];\r\n }\r\n\r\n var Query = this.QueryStack[this.CurrentQueryStackIndex];\r\n if (Query.JoinType == 'right') {\r\n this.executeRightJoin(JoinQuery, Query);\r\n }\r\n else if (Query.Where) {\r\n this.executeWhereJoinLogic(JoinQuery, Query);\r\n }\r\n else {\r\n this.executeWhereUndefinedLogicForJoin(JoinQuery, Query);\r\n }\r\n\r\n }\r\n\r\n constructor(query: ISelectJoin, onSuccess: Function, onError: Function) {\r\n super();\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Query = query;\r\n var That = this,\r\n TableList = []; // used to open the multiple object store\r\n\r\n var convertQueryIntoStack = function (query) {\r\n if (query.hasOwnProperty('Table1')) {\r\n query.Table2['JoinType'] = (query).Join == undefined ? 'inner' : (query).Join.toLowerCase();\r\n That.QueryStack.push(query.Table2);\r\n if (That.QueryStack.length % 2 == 0) {\r\n That.QueryStack[That.QueryStack.length - 1].NextJoin = query.NextJoin;\r\n }\r\n TableList.push(query.Table2.Table);\r\n return convertQueryIntoStack(query.Table1);\r\n }\r\n else {\r\n That.QueryStack.push(query);\r\n TableList.push(query.Table);\r\n return;\r\n }\r\n };\r\n convertQueryIntoStack(query.From);\r\n this.QueryStack.reverse();\r\n //get the data for first table\r\n if (!this.ErrorOccured) {\r\n new Select.Instance({\r\n From: this.QueryStack[0].Table,\r\n Where: this.QueryStack[0].Where\r\n }, function (results) {\r\n var TableName = That.QueryStack[0].Table;\r\n results.forEach(function (item, index) {\r\n That.Results[index] = {};\r\n That.Results[index][TableName] = item;\r\n });\r\n That.startExecutionJoinLogic();\r\n }, function (error) {\r\n That.onErrorOccured(error);\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class GroupByHelper extends Where {\r\n constructor() {\r\n super();\r\n }\r\n\r\n private executeAggregateGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = undefined;\r\n //assign aggregate and free aggregate memory\r\n var AggregateQry = this.Query.Aggregate;\r\n this.Query.Aggregate = undefined;\r\n var Index, ObjKey, Value, AggrColumn;\r\n var calculateAggregate = function () {\r\n for (var prop in AggregateQry) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Max(\" + AggrColumn + \")\"] : 0;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n //compare between old value and new value\r\n return Value > Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Max(\" + AggrColumn + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Min(\" + AggrColumn + \")\"] : Infinity;\r\n Datas[Index][AggrColumn] = Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : Infinity;\r\n //compare between old value and new value\r\n return Value < Datas[Index][AggrColumn] ? Value : Datas[Index][AggrColumn];\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Min(\" + AggrColumn + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old value\r\n Value = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n return Value;\r\n }\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n Value = LookUpObj[ObjKey];\r\n //get old sum value\r\n var Sum = Value ? Value[\"Sum(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Sum += Datas[Index][AggrColumn] ? Datas[Index][AggrColumn] : 0;\r\n Datas[Index][\"Sum(\" + AggrColumn + \")\"] = Sum;\r\n //get old count value\r\n Value = Value ? Value[\"Count(\" + AggrColumn + \")\"] : 0;\r\n //add with old value if data exist\r\n Value += Datas[Index][AggrColumn] ? 1 : 0;\r\n Datas[Index][\"Count(\" + AggrColumn + \")\"] = Value;\r\n }\r\n\r\n if (typeof AggregateQry[prop] == 'string') {\r\n AggrColumn = AggregateQry[prop];\r\n getAvg();\r\n }\r\n else if (Array.isArray(AggregateQry[prop])) {\r\n for (var item in AggregateQry[prop]) {\r\n AggrColumn = AggregateQry[prop][item];\r\n getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (typeof GrpQry == 'string') {\r\n for (Index in Datas) {\r\n ObjKey = Datas[Index][GrpQry];\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n }\r\n else {\r\n for (Index in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[Index][GrpQry[column]];\r\n }\r\n calculateAggregate();\r\n LookUpObj[ObjKey] = Datas[Index];\r\n }\r\n\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (var i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n //Checking for avg and if exist then fill the datas;\r\n if (AggregateQry.Avg) {\r\n if (typeof AggregateQry.Avg == 'string') {\r\n for (Index in Datas) {\r\n var Sum = Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"],\r\n Count = Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n Datas[Index][\"Avg(\" + AggregateQry.Avg + \")\"] = Sum / Count;\r\n if (AggregateQry.Count !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Count(\" + AggregateQry.Avg + \")\"];\r\n }\r\n if (AggregateQry.Sum !== AggregateQry.Avg) {\r\n delete Datas[Index][\"Sum(\" + AggregateQry.Avg + \")\"];\r\n }\r\n }\r\n }\r\n else {\r\n var IsCountTypeString = typeof AggregateQry.Count,\r\n IsSumTypeString = typeof AggregateQry.Count;\r\n for (Index in Datas) {\r\n for (var column in AggregateQry.Avg) {\r\n var AvgColumn = AggregateQry.Avg[column],\r\n Sum = Datas[Index][\"Sum(\" + AvgColumn + \")\"],\r\n Count = Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n Datas[Index][\"Avg(\" + AvgColumn + \")\"] = Sum / Count;\r\n\r\n if (IsCountTypeString) {\r\n if (AggregateQry.Count !== AvgColumn) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Count.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Count(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n\r\n if (IsSumTypeString) {\r\n if (AggregateQry.Sum !== AvgColumn) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n else if (AggregateQry.Sum.indexOf(AvgColumn) == -1) {\r\n delete Datas[Index][\"Sum(\" + AvgColumn + \")\"];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.Results = Datas;\r\n };\r\n\r\n protected processGroupBy = function () {\r\n var GrpQry = this.Query.GroupBy,\r\n Datas = this.Results,\r\n LookUpObj = {};\r\n //free results memory\r\n this.Results = this.Query.GroupBy = undefined;\r\n if (typeof GrpQry == 'string') {\r\n for (var i in Datas) {\r\n LookUpObj[Datas[i][GrpQry]] = Datas[i];\r\n }\r\n }\r\n else {\r\n var ObjKey;\r\n for (var i in Datas) {\r\n ObjKey = \"\";\r\n for (var column in GrpQry) {\r\n ObjKey += Datas[i][GrpQry[column]];\r\n }\r\n LookUpObj[ObjKey] = Datas[i];\r\n }\r\n }\r\n //free datas memory\r\n Datas = [];\r\n for (i in LookUpObj) {\r\n Datas.push(LookUpObj[i]);\r\n }\r\n this.Results = Datas;\r\n };\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Helper extends GroupByHelper {\r\n processOrderBy = function () {\r\n var Order = this.Query.Order;\r\n if (Order && this.Results.length > 0 && !this.Sorted && Order.By) {\r\n Order.Type = Order.Type ? Order.Type.toLowerCase() : 'asc';\r\n var That = this, OrderColumn = Order.By,\r\n sortNumberInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn] - b[OrderColumn];\r\n });\r\n },\r\n sortNumberInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn] - a[OrderColumn];\r\n });\r\n },\r\n sortAlphabetInAsc = function () {\r\n That.Results.sort(function (a, b) {\r\n return a[OrderColumn].toLowerCase().localeCompare(b[OrderColumn].toLowerCase());\r\n });\r\n },\r\n sortAlphabetInDesc = function () {\r\n That.Results.sort(function (a, b) {\r\n return b[OrderColumn].toLowerCase().localeCompare(a[OrderColumn].toLowerCase());\r\n });\r\n };\r\n if (typeof this.Results[0][OrderColumn] == 'string') {\r\n if (Order.Type == 'asc') {\r\n sortAlphabetInAsc();\r\n }\r\n else {\r\n sortAlphabetInDesc();\r\n }\r\n }\r\n else if (typeof this.Results[0][OrderColumn] == 'number') {\r\n if (Order.Type == 'asc') {\r\n sortNumberInAsc();\r\n }\r\n else {\r\n sortNumberInDesc();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private processAggregateQry = function () {\r\n var Datas = this.Results,\r\n Results = {},\r\n Key;\r\n //free results memory\r\n this.Results = undefined;\r\n for (var prop in this.Query.Aggregate) {\r\n switch (prop) {\r\n case 'Count':\r\n var getCount = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key] ? 1 : 0;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Count(\" + Key + \")\"] = getCount();\r\n }\r\n }\r\n break;\r\n case 'Max':\r\n var getMax = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result = Result > Datas[i][Key] ? Result : Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Max(\" + Key + \")\"] = getMax();\r\n }\r\n }\r\n break;\r\n case 'Min':\r\n var getMin = function () {\r\n var Result = Infinity, Value = Infinity;\r\n for (var i in Datas) {\r\n Value = Datas[i][Key] ? Datas[i][Key] : Infinity;\r\n Result = Result < Value ? Result : Value;\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Min(\" + Key + \")\"] = getMin();\r\n }\r\n }\r\n break;\r\n case 'Sum':\r\n var getSum = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Sum(\" + Key + \")\"] = getSum();\r\n }\r\n }\r\n break;\r\n case 'Avg':\r\n var getAvg = function () {\r\n var Result = 0;\r\n for (var i in Datas) {\r\n Result += Datas[i][Key];\r\n };\r\n return Result / Datas.length;\r\n }\r\n if (typeof this.Query.Aggregate[prop] == 'string') {\r\n Key = this.Query.Aggregate[prop];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n else if (Array.isArray(this.Query.Aggregate[prop])) {\r\n for (var key in this.Query.Aggregate[prop]) {\r\n Key = this.Query.Aggregate[prop][key];\r\n Results[\"Avg(\" + Key + \")\"] = getAvg();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n //add results to the first index of result\r\n for (var prop in Results) {\r\n Datas[0][prop] = Results[prop];\r\n }\r\n this.Results = Datas;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Select {\r\n export class Instance extends Helper {\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.processOrderBy();\r\n if (this.Query.Distinct) {\r\n var GroupBy = [];\r\n var Result = this.Results[0];\r\n for (var key in Result) {\r\n GroupBy.push(key);\r\n }\r\n var PrimaryKey = this.getPrimaryKey(this.Query.From),\r\n Index = GroupBy.indexOf(PrimaryKey);\r\n GroupBy.splice(Index, 1);\r\n this.Query.GroupBy = GroupBy.length > 0 ? GroupBy : null;\r\n }\r\n if (this.Query.GroupBy) {\r\n if (this.Query.Aggregate) {\r\n this.executeAggregateGroupBy();\r\n }\r\n else {\r\n this.processGroupBy();\r\n }\r\n }\r\n else if (this.Query.Aggregate) {\r\n this.processAggregateQry();\r\n }\r\n this.OnSuccess(this.Results);\r\n }\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private orQuerySuccess = function () {\r\n this.Results = (this as any).OrInfo.Results;\r\n //free var memory\r\n (this as any).OrInfo.Results = undefined;\r\n this.removeDuplicates();\r\n (this as any).OrInfo.OnSucess(this.Results);\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess,\r\n Results: []\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n (this as any).OrInfo.Results = (this as any).OrInfo.Results.concat(this.Results);\r\n if (!this.Query.Limit || (this.Query.Limit > (this as any).OrInfo.Results.length)) {\r\n this.Results = [];\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n else {\r\n this.orQuerySuccess();\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: ISelect, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.SkipRecord = this.Query.Skip;\r\n this.LimitRecord = this.Query.Limit;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class BaseCount extends Base {\r\n ResultCount: number = 0;\r\n SkipRecord;\r\n LimitRecord;\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class NotWhere extends BaseCount {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var That = this;\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.count();\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.count(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n That.ResultCount += (e).target.result;\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var That = this;\r\n value = op ? value[op] : value;\r\n if (That.CheckFlag) {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n ++That.ResultCount;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n\r\n }\r\n else {\r\n if (this.ObjectStore.count) {\r\n var CountRequest = this.ObjectStore.index(column).count(this.getKeyRange(value, op));\r\n CountRequest.onsuccess = function () {\r\n That.ResultCount = CountRequest.result;\r\n }\r\n CountRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n else {\r\n var Cursor: IDBCursorWithValue,\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n ++That.ResultCount;\r\n Cursor.continue();\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Count {\r\n export class Instance extends Where {\r\n\r\n public onTransactionCompleted = function () {\r\n if (this.SendResultFlag) {\r\n this.OnSuccess(this.ResultCount);\r\n }\r\n }\r\n\r\n constructor(query: ICount, onSuccess: Function, onError: Function) {\r\n super();\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n try {\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.From], \"readonly\");\r\n That.ObjectStore = That.Transaction.objectStore(query.From);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n if (query.Where != undefined) {\r\n if (query.Where.Or) {\r\n new Select.Instance(query as ISelect, function (results) {\r\n That.ResultCount = results.length;\r\n That.onTransactionCompleted()\r\n }, this.OnError);\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From })\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export var updateValue = function (suppliedValue, storedValue) {\r\n for (var key in suppliedValue) {\r\n if (typeof suppliedValue[key] != 'object') {\r\n storedValue[key] = suppliedValue[key];\r\n }\r\n else {\r\n for (var op in suppliedValue[key]) {\r\n switch (op as any) {\r\n case '+': storedValue[key] += suppliedValue[key][op]; break;\r\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\r\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\r\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\r\n default: storedValue[key] = suppliedValue[key];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return storedValue;\r\n }\r\n }\r\n\r\n export class BaseUpdate extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class NotWhere extends BaseUpdate {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = ColumnStore.openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.update(updateValue(That.Query.Set, Cursor.value));\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Update {\r\n export class Instance extends Where {\r\n protected onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.In);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n var That = this;\r\n new Select.Instance({\r\n From: this.Query.In,\r\n Where: this.Query.Where\r\n }, function (results: Array) {\r\n var Key = That.getPrimaryKey(That.Query.In),\r\n InQuery = [],\r\n WhereQry = {};\r\n results.forEach(function (value) {\r\n InQuery.push(value[Key]);\r\n })\r\n WhereQry[Key] = { In: InQuery };\r\n That.createtransactionForOrLogic({\r\n In: That.Query.In,\r\n Where: WhereQry,\r\n Set: That.Query.Set\r\n })\r\n }, this.OnError);\r\n }\r\n\r\n constructor(query: IUpdate, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.checkSchema(query.Set, query.In);\r\n if (!this.ErrorOccured) {\r\n this.Query = query;\r\n var That = this;\r\n var createTransaction = function () {\r\n That.Transaction = DbConnection.transaction([query.In], \"readwrite\");\r\n That.ObjectStore = That.Transaction.objectStore(query.In);\r\n That.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (That.Transaction).ontimeout = That.onTransactionTimeout;\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n else {\r\n createTransaction();\r\n this.goToWhereLogic();\r\n }\r\n }\r\n else {\r\n createTransaction();\r\n this.executeWhereUndefinedLogic();\r\n }\r\n }\r\n else {\r\n this.onErrorOccured(this.Error, true);\r\n }\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.In });\r\n }\r\n }\r\n\r\n private checkSchema(suppliedValue, tableName: string) {\r\n if (suppliedValue) {\r\n var CurrentTable: Table = this.getTable(tableName),\r\n That = this;\r\n if (CurrentTable) {\r\n var onValidationError = function (error: ErrorType, details: any) {\r\n That.ErrorOccured = true;\r\n That.Error = Utils.getError(error, details);\r\n }\r\n //loop through table column and find data is valid\r\n CurrentTable.Columns.every(function (column: Column) {\r\n if (!That.ErrorOccured) {\r\n if (column.Name in suppliedValue) {\r\n var executeCheck = function (value) {\r\n //check not null schema\r\n if (column.NotNull && isNull(value)) {\r\n onValidationError(ErrorType.NullValue, { ColumnName: column.Name });\r\n }\r\n\r\n //check datatype\r\n if (column.DataType) {\r\n var Type = typeof value;\r\n if (Type != column.DataType) {\r\n if (Type != 'object') {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n else {\r\n var AllowedProp = ['+', '-', '*', '/'];\r\n for (var prop in value) {\r\n if (AllowedProp.indexOf(prop) < 0) {\r\n onValidationError(ErrorType.BadDataType, { ColumnName: column.Name });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n executeCheck(suppliedValue[column.Name]);\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n var Error = Utils.getError(ErrorType.TableNotExist, { TableName: tableName });\r\n throwError(Error);\r\n }\r\n }\r\n else {\r\n this.ErrorOccured = true;\r\n //execute onSuccess with supplying 0 as rows affected\r\n this.OnSuccess(0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class BaseDelete extends Base {\r\n CheckFlag = false;\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class NotWhere extends BaseDelete {\r\n\r\n protected executeWhereUndefinedLogic = function () {\r\n var Cursor,\r\n That = this,\r\n CursorOpenRequest = this.ObjectStore.openCursor();\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n (Cursor as any).continue();\r\n }\r\n\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class In extends NotWhere {\r\n private executeInLogic = function (column, values) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n ColumnStore = this.ObjectStore.index(column),\r\n CursorOpenRequest;\r\n if (That.CheckFlag) {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0, length = values.length; i < length; i++) {\r\n if (!That.ErrorOccured) {\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(IDBKeyRange.only(values[i]));\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Like extends In {\r\n CompSymbol: Occurence;\r\n CompValue;\r\n Column;\r\n CompValueLength: Number;\r\n private filterOnOccurence = function (value) {\r\n var Found = false;\r\n value = value.toLowerCase();\r\n switch (this.CompSymbol) {\r\n case Occurence.Any: if (value.indexOf(this.CompValue) >= 0) {\r\n Found = true;\r\n }; break;\r\n case Occurence.First: if (value.indexOf(this.CompValue) == 0) {\r\n Found = true;\r\n }; break;\r\n default: if (value.lastIndexOf(this.CompValue) == value.length - this.CompValueLength) {\r\n Found = true;\r\n };\r\n }\r\n return Found;\r\n }\r\n\r\n protected executeLikeLogic = function (column, value, symbol: Occurence) {\r\n var That = this,\r\n Cursor: IDBCursorWithValue;\r\n this.CompValue = (value).toLowerCase();\r\n this.CompValueLength = this.CompValue.length;\r\n this.CompSymbol = symbol;\r\n this.Column = column;\r\n this.CursorOpenRequest = this.ObjectStore.index(column).openCursor();\r\n this.CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n if (That.CheckFlag) {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key) &&\r\n That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n this.CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.filterOnOccurence(Cursor.key)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Where extends Like {\r\n private executeWhereLogic = function (column, value, op) {\r\n var Cursor: IDBCursorWithValue,\r\n That = this,\r\n CursorOpenRequest;\r\n value = op ? value[op] : value;\r\n CursorOpenRequest = this.ObjectStore.index(column).openCursor(this.getKeyRange(value, op));\r\n if (That.CheckFlag) {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n if (That.checkForWhereConditionMatch(Cursor.value)) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n }\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n else {\r\n CursorOpenRequest.onsuccess = function (e) {\r\n Cursor = (e).target.result;\r\n if (Cursor) {\r\n Cursor.delete();\r\n ++That.RowAffected;\r\n Cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n CursorOpenRequest.onerror = function (e) {\r\n That.ErrorOccured = true;\r\n That.onErrorOccured(e);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","module JsStore {\r\n export module Business {\r\n export module Delete {\r\n export class Instance extends Where {\r\n\r\n private onTransactionCompleted = function () {\r\n this.OnSuccess(this.RowAffected);\r\n }\r\n\r\n private createtransactionForOrLogic = function (query) {\r\n var That = this;\r\n this.Query = query;\r\n try {\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.Transaction.oncomplete = function (e) {\r\n That.onTransactionCompleted();\r\n };\r\n (this.Transaction).ontimeout = That.onTransactionCompleted;\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.goToWhereLogic();\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n\r\n private executeOrLogic = function () {\r\n (this as any).OrInfo = {\r\n OrQuery: this.Query.Where.Or,\r\n OnSucess: this.OnSuccess\r\n };\r\n (this as any).TmpQry = {\r\n From: this.Query.From,\r\n Where: {}\r\n };\r\n var onSuccess = function () {\r\n var Key = getObjectFirstKey((this as any).OrInfo.OrQuery);\r\n if (Key != null) {\r\n (this as any).TmpQry['Where'][Key] = (this as any).OrInfo.OrQuery[Key];\r\n delete (this as any).OrInfo.OrQuery[Key];\r\n this.createtransactionForOrLogic((this as any).TmpQry);\r\n }\r\n else {\r\n (this as any).OrInfo.OnSucess(this.RowAffected);\r\n }\r\n }\r\n //free or memory\r\n this.Query.Where.Or = undefined;\r\n this.OnSuccess = onSuccess;\r\n }\r\n\r\n constructor(query: IDelete, onSuccess: Function, onError: Function) {\r\n super();\r\n try {\r\n var That = this;\r\n this.Query = query;\r\n this.OnSuccess = onSuccess;\r\n this.OnError = onError;\r\n this.Transaction = DbConnection.transaction([query.From], \"readwrite\");\r\n this.ObjectStore = this.Transaction.objectStore(query.From);\r\n this.Transaction.oncomplete = function () {\r\n That.onTransactionCompleted();\r\n }\r\n this.Transaction.onerror = function (e) {\r\n That.onErrorOccured(e);\r\n }\r\n\r\n if (query.Where) {\r\n if (query.Where.Or) {\r\n this.executeOrLogic();\r\n }\r\n this.goToWhereLogic();\r\n }\r\n else {\r\n this.executeWhereUndefinedLogic();\r\n }\r\n\r\n }\r\n catch (ex) {\r\n this.onExceptionOccured(ex, { TableName: query.From });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","module JsStore {\r\n export var WorkerStatus: WebWorkerStatus = WebWorkerStatus.NotStarted,\r\n WorkerInstance: Worker;\r\n export class CodeExecutionHelper {\r\n RequestQueue: Array = [];\r\n IsCodeExecuting = false;\r\n\r\n protected pushApi = function (request: IWebWorkerRequest, usePromise: boolean) {\r\n if (usePromise === true) {\r\n var That = this;\r\n return new Promise(function (resolve, reject) {\r\n request.OnSuccess = function (result) {\r\n resolve(result);\r\n };\r\n request.OnError = function (error) {\r\n reject(error);\r\n };\r\n That.prcoessExecutionOfCode(request);\r\n });\r\n }\r\n else {\r\n this.prcoessExecutionOfCode(request);\r\n return this;\r\n }\r\n }\r\n\r\n private prcoessExecutionOfCode = function (request: IWebWorkerRequest) {\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n switch (request.Name) {\r\n case 'create_db':\r\n case 'open_db':\r\n this.RequestQueue.splice(0, 0, request);\r\n if (WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n };\r\n Status.ConStatus = ConnectionStatus.Connected;\r\n break;\r\n default: this.RequestQueue.push(request);\r\n }\r\n }\r\n else {\r\n this.RequestQueue.push(request);\r\n if (this.RequestQueue.length == 1 && WorkerStatus != WebWorkerStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n log(\"request pushed: \" + request.Name);\r\n }\r\n\r\n private executeCode = function () {\r\n if (!this.IsCodeExecuting && this.RequestQueue.length > 0) {\r\n this.IsCodeExecuting = true;\r\n var FirstRequest = this.RequestQueue[0],\r\n Request = {\r\n Name: FirstRequest.Name,\r\n Query: FirstRequest.Query\r\n }\r\n log(\"request executing : \" + FirstRequest.Name);\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n this.executeCodeUsingWorker(Request);\r\n } else {\r\n this.executeCodeDirect(Request);\r\n }\r\n }\r\n }\r\n\r\n private executeCodeDirect = function (request: IWebWorkerRequest) {\r\n var That = this;\r\n new Business.Main(function (results) {\r\n That.processFinishedRequest(results);\r\n }).checkConnectionAndExecuteLogic(request);\r\n }\r\n\r\n private executeCodeUsingWorker = function (request: IWebWorkerRequest) {\r\n WorkerInstance.postMessage(request);\r\n }\r\n\r\n private processFinishedRequest = function (message: IWebWorkerResult) {\r\n var FinishedRequest: IWebWorkerRequest = this.RequestQueue.shift();\r\n this.IsCodeExecuting = false;\r\n if (FinishedRequest) {\r\n log(\"request finished : \" + FinishedRequest.Name);\r\n if (message.ErrorOccured) {\r\n if (FinishedRequest.OnError) {\r\n FinishedRequest.OnError(message.ErrorDetails);\r\n }\r\n }\r\n else {\r\n if (FinishedRequest.OnSuccess) {\r\n if (message.ReturnedValue != null) {\r\n FinishedRequest.OnSuccess(message.ReturnedValue);\r\n }\r\n else {\r\n FinishedRequest.OnSuccess();\r\n }\r\n }\r\n }\r\n this.executeCode();\r\n }\r\n }\r\n\r\n private onWorkerFailed = function () {\r\n console.warn('JsStore is not runing in web worker');\r\n WorkerStatus = WebWorkerStatus.Failed;\r\n if (Status.ConStatus == ConnectionStatus.NotStarted) {\r\n this.executeCode();\r\n }\r\n }\r\n\r\n protected createWorker = function () {\r\n var That: CodeExecutionHelper = this;\r\n try {\r\n if (Worker) {\r\n var ScriptUrl = this.getScriptUrl();\r\n if (ScriptUrl && ScriptUrl.length > 0) {\r\n WorkerInstance = new Worker(ScriptUrl);\r\n WorkerInstance.onmessage = function (msg) {\r\n That.onMessageFromWorker(msg);\r\n }\r\n That.executeCodeUsingWorker({\r\n Name: 'change_log_status',\r\n Query: {\r\n logging: EnableLog\r\n }\r\n });\r\n setTimeout(function () {\r\n if (WorkerStatus != WebWorkerStatus.Failed) {\r\n WorkerStatus = WebWorkerStatus.Registered;\r\n }\r\n if (Status.ConStatus == ConnectionStatus.Connected) {\r\n That.executeCode();\r\n }\r\n }, 100);\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n\r\n }\r\n else {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n catch (ex) {\r\n That.onWorkerFailed();\r\n }\r\n }\r\n\r\n private getScriptUrl(fileName: string) {\r\n var ScriptUrl = \"\";\r\n var FileName = fileName ? fileName.toLowerCase() : \"jsstore\";\r\n var Scripts = document.getElementsByTagName('script');\r\n for (var i = Scripts.length - 1, url = \"\"; i >= 0; i--) {\r\n url = Scripts[i].src;\r\n url = url.substring(url.lastIndexOf('/') + 1).toLowerCase();\r\n if (url.length > 0 && url.indexOf(FileName) >= 0) {\r\n ScriptUrl = Scripts[i].src;\r\n return ScriptUrl;\r\n }\r\n }\r\n return ScriptUrl;\r\n }\r\n\r\n private onMessageFromWorker = function (msg) {\r\n var That = this;\r\n if (typeof msg.data == 'string') {\r\n var Datas = msg.data.split(':')[1];\r\n switch (Datas) {\r\n case 'WorkerFailed': That.onWorkerFailed();\r\n break;\r\n }\r\n }\r\n else {\r\n this.processFinishedRequest(msg.data);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","import Model = JsStore.Model;\r\nimport DataBase = Model.DataBase;\r\nimport Column = Model.Column;\r\nimport Table = Model.Table;\r\ndeclare var Promise: any;\r\n\r\nmodule JsStore {\r\n export class Instance extends CodeExecutionHelper {\r\n constructor(dbName = null) {\r\n super();\r\n if (WorkerStatus == WebWorkerStatus.Registered) {\r\n WorkerInstance.terminate();\r\n }\r\n else if (WorkerStatus == WebWorkerStatus.NotStarted) {\r\n KeyStore.init();\r\n }\r\n this.createWorker();\r\n if (dbName) {\r\n this.openDb(dbName);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * open database\r\n * \r\n * @param {string} dbName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n openDb = function (dbName: string, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'open_db',\r\n Query: dbName,\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n }, false);\r\n }\r\n\r\n /**\r\n * creates DataBase\r\n * \r\n * @param {Model.IDataBase} dataBase \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n createDb = function (dataBase: Model.IDataBase, onSuccess: Function = null, onError: Function = null) {\r\n return this.pushApi({\r\n Name: 'create_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError,\r\n Query: dataBase\r\n }, false);\r\n }\r\n\r\n\r\n /**\r\n * drop dataBase\r\n * \r\n * @param {Function} onSuccess \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n dropDb = function (onSuccess: Function, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'drop_db',\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * select data from table\r\n * \r\n * @param {IQuery} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * \r\n * @memberOf Main\r\n */\r\n select = function (query: ISelect, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'select',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * get no of result from table\r\n * \r\n * @param {ICount} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n count = function (query: ICount, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'count',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n\r\n /**\r\n * insert data into table\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n insert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * update data into table\r\n * \r\n * @param {IUpdate} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n update = function (query: IUpdate, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'update',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete data from table\r\n * \r\n * @param {IDelete} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} onError \r\n * @memberof Instance\r\n */\r\n delete = function (query: IDelete, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n query.OnSuccess = query.OnError = null;\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'delete',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * delete all data from table\r\n * \r\n * @param {string} tableName \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @memberof Instance\r\n */\r\n clear = function (tableName: string, onSuccess: Function = null, onError: Function = null) {\r\n var UsePromise = onSuccess ? false : true;\r\n return this.pushApi({\r\n Name: 'clear',\r\n Query: tableName,\r\n OnSuccess: onSuccess,\r\n OnError: onerror\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * insert bulk amount of data\r\n * \r\n * @param {IInsert} query \r\n * @param {Function} [onSuccess=null] \r\n * @param {Function} [onError=null] \r\n * @returns \r\n * @memberof Instance\r\n */\r\n bulkInsert = function (query: IInsert, onSuccess: Function = null, onError: Function = null) {\r\n onSuccess = query.OnSuccess ? query.OnSuccess : onSuccess;\r\n onError = query.OnError ? query.OnError : onError;\r\n var UsePromise = onSuccess ? false : true;\r\n query.OnSuccess = query.OnError = null;\r\n return this.pushApi({\r\n Name: 'bulk_insert',\r\n Query: query,\r\n OnSuccess: onSuccess,\r\n OnError: onError\r\n }, UsePromise);\r\n }\r\n\r\n /**\r\n * export the result in json file\r\n * \r\n * @param {ISelect} qry \r\n * @memberof Instance\r\n */\r\n exportJson = function (query: ISelect) {\r\n var OnSuccess = function (url) {\r\n var Link = document.createElement(\"a\");\r\n Link.href = url;\r\n Link.download = query.From + \".json\";\r\n Link.click();\r\n if (OnSuccessCallBack) {\r\n OnSuccessCallBack();\r\n }\r\n },\r\n OnError = query['OnError'],\r\n OnSuccessCallBack = query['OnSuccess'];\r\n query['OnSuccess'] = query['OnError'] = undefined;\r\n var UsePromise = OnSuccessCallBack ? false : true;\r\n if (UsePromise) {\r\n return new Promise(function (resolve, reject) {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise).then(function (url) {\r\n OnSuccess(url);\r\n resolve();\r\n }).catch(function (err) {\r\n reject(err);\r\n });\r\n });\r\n }\r\n else {\r\n this.pushApi({\r\n Name: 'export_json',\r\n Query: query,\r\n OnSuccess: OnSuccess,\r\n OnError: OnError\r\n }, UsePromise);\r\n }\r\n\r\n }\r\n }\r\n}\r\n","if (self && !self.alert) {\r\n self.onmessage = function (e) {\r\n JsStore.log(\"Request executing from WebWorker, request name: \" + e.data.Name);\r\n var Request = e.data,\r\n BusinessMain = new JsStore.Business.Main();\r\n BusinessMain.checkConnectionAndExecuteLogic(Request);\r\n };\r\n JsStore.WorkerStatus = JsStore.WebWorkerStatus.Registered;\r\n KeyStore.init();\r\n}\r\n\r\n"]} \ No newline at end of file diff --git a/Dist/V 1.3/V 1.3.1/jsstore.min.js b/Dist/V 1.3/V 1.3.1/jsstore.min.js deleted file mode 100644 index 7f5f97c7..00000000 --- a/Dist/V 1.3/V 1.3.1/jsstore.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * @license :JsStore.js - v1.3.1 - 30/11/2017 - * https://github.com/ujjwalguptaofficial/JsStore - * Copyright (c) 2017 @Ujjwal Gupta; Licensed MIT */ -var __extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();!function(e){var t=function(){function e(){}return e.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):self.alert?JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbUndefined}:self.postMessage("message:WorkerFailed")},e}();e.Utils=t}(KeyStore||(KeyStore={}));!function(e){!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_connected"}(e.ConnectionStatus||(e.ConnectionStatus={})),e.RequestQueue=[],e.TableName="LocalStore",e.IsCodeExecuting=!1}(KeyStore||(KeyStore={}));!function(e){e.prcoessExecutionOfCode=function(t){e.RequestQueue.push(t),1==e.RequestQueue.length&&e.executeCode()},e.executeCode=function(){if(!e.IsCodeExecuting&&e.RequestQueue.length>0){e.IsCodeExecuting=!0;var t={Name:e.RequestQueue[0].Name,Query:e.RequestQueue[0].Query};e.executeCodeDirect(t)}},e.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},e.processFinishedRequest=function(t){var n=e.RequestQueue.shift();e.IsCodeExecuting=!1,t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode()}}(KeyStore||(KeyStore={}));!function(e){!function(e){var t=function(){return function(){this.Results=null,this.ErrorOccured=!1,this.ErrorCount=0,this.onErrorOccured=function(e){++this.ErrorCount,1==this.ErrorCount&&null!=this.OnError&&this.OnError(e.target.error)}}}();e.Base=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.get=function(){var e=this,t=function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(e.Results=n.value.Value)}};for(var n in this.Query.Where){t(n,this.Query.Where[n]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readonly"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(e){null!=r&&r(u.Results)},s.get(),s}return __extends(n,t),n}(e.Base);e.Get=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.setData=function(e){var t=this,n=function(){t.ObjectStore.add(e).onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}};!function(){var r=t.ObjectStore.index("Key").openCursor(IDBKeyRange.only(e.Key));r.onsuccess=function(t){var r=t.target.result;r?(r.value.Value=e.Value,r.update(r.value)):n()},r.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}}()};try{s.OnError=o,s.Transaction=e.DbConnection.transaction([n.TableName],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.TableName),s.Transaction.oncomplete=function(e){null!=r&&r()},s.setData(n.Set)}catch(e){}return s}return __extends(n,t),n}(e.Base);e.Set=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.RowAffected=0,s.remove=function(){var e=this,t=function(t,n){var r=e.ObjectStore.index(t).openCursor(IDBKeyRange.only(n));r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)},r.onsuccess=function(t){var n=t.target.result;n&&(n.delete(),++e.RowAffected,n.continue())}};for(var n in this.Query.Where){e.ErrorOccured||t(n,e.Query.Where[n]);break}};var u=s;return s.Query=n,s.OnError=o,s.Transaction=e.DbConnection.transaction([n.From],"readwrite"),s.ObjectStore=s.Transaction.objectStore(n.From),s.Transaction.oncomplete=function(){null!=r&&r(u.RowAffected)},s.Transaction.onerror=function(e){u.onErrorOccured(e)},s.remove(),s}return __extends(n,t),n}(e.Base);e.Remove=t}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(t){var n=function(){return function(n,r,o,s){var u=self.indexedDB.open(n,1);u.onerror=function(e){"InvalidStateError"==e.target.error.name&&(JsStore.Status={ConStatus:JsStore.ConnectionStatus.UnableToStart,LastError:JsStore.ErrorType.IndexedDbBlocked}),null!=s&&s(e.target.error)},u.onsuccess=function(n){t.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(e){t.Status.LastError="Error occured in connection :"+e.target.result},t.DbConnection.onabort=function(n){t.Status.ConStatus=e.ConnectionStatus.Closed,t.Status.LastError="Connection aborted"},null!=o&&o()},u.onupgradeneeded=function(e){e.target.result.createObjectStore(r,{keyPath:"Key"}).createIndex("Key","Key",{unique:!0})}}}();t.InitDb=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));!function(e){!function(t){t.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""};var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){if("create_db"==n.Name||"open_db"==n.Name)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.Connected)this.executeLogic(n);else if(t.Status.ConStatus==e.ConnectionStatus.NotStarted)r=this,setTimeout(function(){r.checkConnectionAndExecuteLogic(n)},100);else if(t.Status.ConStatus==e.ConnectionStatus.Closed){var r=this;this.createDb(e.TableName,function(){r.checkConnectionAndExecuteLogic(n)},100)}},this.returnResult=function(e){this.OnSuccess&&this.OnSuccess(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"get":this.get(e.Query,n,r);break;case"set":this.set(e.Query,n,r);break;case"remove":this.remove(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r)}},this.set=function(e,n,r){new t.Set(e,n,r)},this.remove=function(e,n,r){new t.Remove(e,n,r)},this.get=function(e,n,r){new t.Get(e,n,r)},this.createDb=function(e,n,r){new t.InitDb("KeyStore",e,n,r)},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(KeyStore||(KeyStore={}));var KeyStore;!function(e){e.init=function(){e.Utils.setDbType(),indexedDB&&e.prcoessExecutionOfCode({Name:"create_db",Query:e.TableName})},e.get=function(t,n,r){void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"get",Query:o,OnSuccess:n,OnError:r}),this},e.set=function(t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null);var s={TableName:this.TableName,Set:{Key:t,Value:n}};return e.prcoessExecutionOfCode({Name:"set",Query:s,OnSuccess:r,OnError:o}),this},e.remove=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o={From:this.TableName,Where:{Key:t}};return e.prcoessExecutionOfCode({Name:"remove",Query:o,OnSuccess:n,OnError:r}),this}}(KeyStore||(KeyStore={}));!function(e){!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.BadDataType="bad_data_type",e.NextJoinNotExist="next_join_not_exist",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.IndexedDbUndefined="indexeddb_undefined",e.IndexedDbBlocked="indexeddb_blocked"}(e.ErrorType||(e.ErrorType={}));!function(e){e.First="f",e.Last="l",e.Any="a"}(e.Occurence||(e.Occurence={}));!function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(e.WebWorkerStatus||(e.WebWorkerStatus={}));!function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start"}(e.ConnectionStatus||(e.ConnectionStatus={}));!function(e){e.In="In",e.Like="Like",e.Or="Or"}(e.WhereQryOption||(e.WhereQryOption={}));!function(e){e.String="string",e.Object="object",e.Array="array"}(e.DataType||(e.DataType={}))}(JsStore||(JsStore={}));!function(e){e.EnableLog=!1,e.DbVersion=0,e.Status={ConStatus:e.ConnectionStatus.NotStarted,LastError:""},e.TempResults=[],e.throwError=function(e){throw e},e.getObjectFirstKey=function(e){for(var t in e)return t;return null},e.log=function(t){e.EnableLog},e.logError=function(t){e.EnableLog}}(JsStore||(JsStore={}));!function(e){var t=function(){function t(){}return t.getError=function(t,n){var r={Name:t,Message:""};switch(t){case e.ErrorType.NotArray:r.Message="Supplied value is not an array";break;case e.ErrorType.UndefinedColumn:r.Message="Column is undefined in Where";break;case e.ErrorType.UndefinedValue:r.Message="Value is undefined in Where";break;case e.ErrorType.UndefinedColumnName:r.Message="Column name is undefined";break;case e.ErrorType.UndefinedColumnValue:r.Message="Column value is undefined";break;case e.ErrorType.NoValueSupplied:r.Message="No value supplied";break;case e.ErrorType.InvalidOp:r.Message="Invalid Op Value '"+n.Op+"'";break;case e.ErrorType.ColumnNotExist:r.Message="Column '"+n.ColumnName+"' does not exist";break;case e.ErrorType.NullValue:r.Message="Null value is not allowed for column '"+n.ColumnName+"'";break;case e.ErrorType.BadDataType:r.Message="Supplied value for column '"+n.ColumnName+"' does not have valid type";break;case e.ErrorType.NextJoinNotExist:r.Message="Next join details not supplied";break;case e.ErrorType.TableNotExist:r.Message="Table '"+n.TableName+"' does not exist";break;case e.ErrorType.DbNotExist:r.Message="Database '"+n.DbName+"' does not exist"}return r},t.convertObjectintoLowerCase=function(e){for(var t=Object.keys(e),n=t.length;n--;){var r=t[n];e[r.toLowerCase()]=e[r],delete e[r]}},t.setDbType=function(){self.indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,indexedDB?(self.IDBTransaction=self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange):e.throwError("Your browser doesnot support IndexedDb")},t}();e.Utils=t}(JsStore||(JsStore={}));!function(e){e.isDbExist=function(t,n,r){void 0===r&&(r=null);var o=!n;if(e.Status.ConStatus!=e.ConnectionStatus.UnableToStart){if(o)return new Promise(function(n,r){"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})});"string"==typeof t?e.getDbVersion(t,function(e){n(Boolean(e))}):e.getDbVersion(t.DbName,function(e){n(t.Table.Version<=e)})}else{var s={Name:e.Status.LastError,Message:""};switch(s.Name){case e.ErrorType.IndexedDbBlocked:s.Message="IndexedDB is blocked";break;case e.ErrorType.IndexedDbUndefined:s.Message="IndexedDB is not supported"}if(o)return new Promise(function(e,t){t(s)});r&&r(s)}},e.getDbVersion=function(e,t){KeyStore.get("JsStore_"+e+"_Db_Version",function(e){t(Number(e))})},e.getDbSchema=function(e,t){t&&KeyStore.get("JsStore_"+e+"_Schema",function(e){t(e)})},e.isNull=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0==e.length;case"number":return isNaN(e)}return!1},e.enableLog=function(){e.EnableLog=!0,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})},e.disableLog=function(){e.EnableLog=!1,e.WorkerInstance&&e.WorkerInstance.postMessage({Name:"change_log_status",Query:{logging:e.EnableLog}})}}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(t,n){null!=t.Name?this.Name=t.Name:e.throwError("Column Name is not defined for table:"+n),this.AutoIncrement=null!=t.AutoIncrement&&t.AutoIncrement,this.PrimaryKey=null!=t.PrimaryKey&&t.PrimaryKey,this.Unique=null!=t.Unique&&t.Unique,this.NotNull=null!=t.NotNull&&t.NotNull,this.DataType=null!=t.DataType?t.DataType:t.AutoIncrement?"number":null,this.Default=t.Default}}();t.Column=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){function n(e,n){this.Name="",this.Columns=[],this.RequireDelete=!1,this.RequireCreation=!1,this.PrimaryKey="",this.Name=e.Name,this.Version=void 0==e.Version?1:e.Version;var r=this;e.Columns.forEach(function(n){r.Columns.push(new t.Column(n,e.Name))}),this.setRequireDelete(n),this.setDbVersion(n),this.setPrimaryKey(n)}return n.prototype.setPrimaryKey=function(e){var t=this;this.Columns.forEach(function(e){e.PrimaryKey&&(t.PrimaryKey=e.Name)})},n.prototype.setRequireDelete=function(e){var t=this;KeyStore.get("JsStore_"+e+"_"+this.Name+"_Version",function(e){null==e?t.RequireCreation=!0:ethis.Version?e.DbVersion:this.Version,KeyStore.set("JsStore_"+t+"_Db_Version",e.DbVersion).set("JsStore_"+t+"_"+this.Name+"_Version",e.DbVersion),this.Version=e.DbVersion},n}();t.Table=n}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));!function(e){!function(e){var t=function(){return function(t){this.Tables=[];var n=this;this.Name=t.Name,t.Tables.forEach(function(t){n.Tables.push(new e.Table(t,n.Name))})}}();e.DataBase=t}(e.Model||(e.Model={}))}(JsStore||(JsStore={}));!function(e){!function(e){var t=function(){function t(){this.getTable=function(t){var n;return e.ActiveDataBase.Tables.every(function(e){return e.Name!=t||(n=e,!1)}),n},this.getKeyRange=function(e,t){var n;switch(t){case"-":n=IDBKeyRange.bound(e.Low,e.High,!1,!1);break;case">":n=IDBKeyRange.lowerBound(e,!0);break;case">=":n=IDBKeyRange.lowerBound(e);break;case"<":n=IDBKeyRange.upperBound(e,!0);break;case"<=":n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n},this.getObjectSecondKey=function(e){var t=!1;for(var n in e){if(t)return n;t=!0}},this.getPrimaryKey=function(e){var t=this.getTable(e).PrimaryKey;return t||this.getKeyPath()},this.getKeyPath=function(t){return e.DbConnection.transaction([t],"readonly").objectStore(t).keyPath},this.sortNumberInAsc=function(e){return e.sort(function(e,t){return e-t}),e},this.sortNumberInDesc=function(e){return e.sort(function(e,t){return t-e}),e},this.sortAlphabetInAsc=function(e){return e.sort(function(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}),e},this.sortAlphabetInDesc=function(e){return e.sort(function(e,t){return t.toLowerCase().localeCompare(e.toLowerCase())}),e}}return t.prototype.getCombination=function(e){var t=[],n=function(e,r,o){if(o==e.length)t.push(r.join(""));else{var s=e.charAt(o);r[o]=s.toLowerCase(),n(e,r,o+1),r[o]=s.toUpperCase(),n(e,r,o+1)}};return n(e,[],0),t},t.prototype.getAllCombinationOfWord=function(e,t){if(t){for(var n=[],r=0,o=e.length;r1||Object.keys(this.Query.Where).length>1);var r=e.getObjectFirstKey(n);switch(r){case"Like":var o=n.Like.split("%");o[1]?o.length>2?this.executeLikeLogic(t,o[1],e.Occurence.Any):this.executeLikeLogic(t,o[1],e.Occurence.Last):this.executeLikeLogic(t,o[0],e.Occurence.First);break;case"In":this.executeInLogic(t,n.In);break;case"-":case">":case"<":case">=":case"<=":this.executeWhereLogic(t,n,r);break;case"Aggregate":break;default:this.executeWhereLogic(t,n)}}else this.CheckFlag=Boolean(Object.keys(this.Query.Where).length>1),this.executeWhereLogic(t,n)}else this.ErrorOccured=!0,this.Error=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:t}),e.throwError(this.Error)},n.makeQryInCaseSensitive=function(t){var n,r,o=[];for(var s in t)if("object"==typeof(n=t[s])){for(var u in n)switch(r=n[u],u){case e.WhereQryOption.In:o=o.concat(this.getAllCombinationOfWord(r,!0));break;case e.WhereQryOption.Like:break;default:o=o.concat(this.getAllCombinationOfWord(r))}t[s].In=o}else o=o.concat(this.getAllCombinationOfWord(n)),t[s]={In:o};return t},n}return __extends(n,t),n.prototype.checkForWhereConditionMatch=function(t){var n=this.Query.Where,r=!0,o=function(e,t){for(var o=n[e].In,s=0,u=o.length;s2?e.Occurence.Any:e.Occurence.Last):(u=c[0],s=e.Occurence.First),o=o.toLowerCase(),s){case e.Occurence.Any:(i=o.indexOf(u.toLowerCase()))<0&&(r=!1);break;case e.Occurence.First:((i=o.indexOf(u.toLowerCase()))>0||i<0)&&(r=!1);break;default:(i=o.lastIndexOf(u.toLowerCase()))":t<=s&&(r=!1);break;case"<":t>=s&&(r=!1);break;case"<=":t>s&&(r=!1);break;case">=":ts.High)&&(r=!1)}};for(var i in n){var c=n[i];if(!r)break;if("object"==typeof c)for(var a in c){if(!r)break;switch(a){case"In":o(i,t[i]);break;case"Like":s(i,t[i]);break;case"-":case">":case"<":case">=":case"<=":u(i,t[i],a)}}else{if(c!=t[i]){r=!1;break}}}return r},n}(t.BaseHelper);t.Base=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(n,r,o){var s=[],u=indexedDB.open(t.ActiveDataBase.Name,n);u.onerror=function(e){null!=o&&o(e.target.error)},u.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=u.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection aborted"},null!=r&&r(s),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_Schema",t.ActiveDataBase)},u.onupgradeneeded=function(e){var n=e.target.result;t.ActiveDataBase.Tables.forEach(function(e){e.RequireDelete?(n.objectStoreNames.contains(e.Name)&&n.deleteObjectStore(e.Name),i(n,e)):e.RequireCreation&&i(n,e)})};var i=function(e,n){try{if(n.PrimaryKey.length>0)r=e.createObjectStore(n.Name,{keyPath:n.PrimaryKey}),n.Columns.forEach(function(e){e.PrimaryKey?r.createIndex(e.Name,e.Name,{unique:!0}):r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)});else{var r=e.createObjectStore(n.Name,{autoIncrement:!0});n.Columns.forEach(function(e){r.createIndex(e.Name,e.Name,{unique:e.Unique}),e.AutoIncrement&&KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_"+e.Name+"_Value",0)})}s.push(n.Name),KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",n.Version)}catch(e){}}}}();t.CreateDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(n,r,o){this.deleteDb=function(n,r,o){var s=indexedDB.deleteDatabase(n);s.onblocked=function(){null!=o&&o("database is blocked, cant be deleted right now.")},s.onerror=function(e){null!=o&&o(event.target.error)},s.onsuccess=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Db_Version"),t.ActiveDataBase.Tables.forEach(function(e){KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_Version"),e.Columns.forEach(function(n){n.AutoIncrement&&KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_"+e.Name+"_"+n.Name+"_Value")})}),KeyStore.remove("JsStore_"+t.ActiveDataBase.Name+"_Schema"),r()}};var s=this;t.DbConnection.close(),setTimeout(function(){s.deleteDb(n,r,o)},100)}}();t.DropDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(n){function r(){var r=null!==n&&n.apply(this,arguments)||this;return r.ValuesAffected=[],r.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},r.checkModifyInsertValues=function(n,r){var o,s=this,u=0,i=n.Name,c=function(){o=r[u++],a()},a=function(){o?l():s.insertData(r)},l=function(){var r=0,u=function(a){if(a){var l=function(t,n){s.ErrorOccured=!0,s.Error=e.Utils.getError(t,n)},h=function(){a.NotNull&&e.isNull(o[a.Name])?l(e.ErrorType.NullValue,{ColumnName:a.Name}):a.DataType&&typeof o[a.Name]!=a.DataType&&l(e.ErrorType.BadDataType,{ColumnName:a.Name}),u(n.Columns[r++])};s.ErrorOccured?s.onErrorOccured(s.Error,!0):a.AutoIncrement?KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",function(e){o[a.Name]=++e,KeyStore.set("JsStore_"+t.ActiveDataBase.Name+"_"+i+"_"+a.Name+"_Value",e),h()}):a.Default&&null==o[a.Name]?(o[a.Name]=a.Default,h()):h()}else c()};u(n.Columns[r++])};c()},r}return __extends(r,n),r}(t.Base);t.InsertHelper=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.insertData=function(e){var n,r=this,o=0,s=this.Query.Return;n=s?function(t){if(t){var s=u.add(t);s.onerror=function(e){r.onErrorOccured(e)},s.onsuccess=function(s){r.ValuesAffected.push(t),n(e[o++])}}}:function(t){if(t){var s=u.add(t);s.onerror=function(e){r.onErrorOccured(e)},s.onsuccess=function(t){++r.RowAffected,n(e[o++])}}},r.Transaction=t.DbConnection.transaction([r.Query.Into],"readwrite");var u=r.Transaction.objectStore(r.Query.Into);r.Transaction.oncomplete=function(e){r.onTransactionCompleted()},n(e[o++])};try{u.Query=r,u.OnSuccess=o,u.OnError=s;var i=u.getTable(r.Into);if(i)u.Query.SkipDataCheck?(u.insertData(u.Query.Values),u.Query.Values=void 0):(u.checkModifyInsertValues(i,u.Query.Values),u.Query.Values=void 0);else{var c=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(c)}}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r}(t.InsertHelper);t.Insert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(n){function r(r,o,s){var u=n.call(this)||this;u.ValuesAffected=[],u.ValuesIndex=0,u.onTransactionCompleted=function(){this.OnSuccess(this.Query.Return?this.ValuesAffected:this.RowAffected)},u.bulkinsertData=function(){var e=this;this.Transaction=t.DbConnection.transaction([this.Query.Into],"readwrite"),this.ObjectStore=this.Transaction.objectStore(this.Query.Into),this.Transaction.oncomplete=function(t){e.OnSuccess()},this.Query.Values.forEach(function(t){e.ObjectStore.add(t)})};try{u.Query=r,u.OnSuccess=o,u.OnError=s;if(u.Table=u.getTable(r.Into),u.Table)u.bulkinsertData();else{var i=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:r.Into});e.throwError(i)}}catch(e){u.onExceptionOccured(e,{TableName:r.Into})}return u}return __extends(r,n),r}(t.Base);t.BulkInsert=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(n,r,o){if(t.ActiveDataBase.Name.length>0){var s=indexedDB.open(t.ActiveDataBase.Name,n);s.onerror=function(e){null!=o&&o(e.target.error)},s.onsuccess=function(n){e.Status.ConStatus=e.ConnectionStatus.Connected,t.DbConnection=s.result,t.DbConnection.onclose=function(){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Closed, trying to reconnect"},t.DbConnection.onversionchange=function(e){null===e.newVersion&&e.target.close()},t.DbConnection.onerror=function(t){e.Status.LastError="Error occured in connection :"+t.target.result},t.DbConnection.onabort=function(t){e.Status.ConStatus=e.ConnectionStatus.Closed,e.Status.LastError="Connection Aborted"},null!=r&&r()}}else e.throwError("Database name is not supplied.")}}();t.OpenDb=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this,u=s,i=e.DbConnection.transaction([n],"readwrite").objectStore(n).clear();return i.onsuccess=function(t){u.getTable(n).Columns.forEach(function(t){t.AutoIncrement&&KeyStore.set("JsStore_"+e.ActiveDataBase.Name+"_"+n+"_"+t.Name+"_Value",0)}),null!=r&&r()},i.onerror=function(e){null!=o&&o()},s}return __extends(n,t),n}(e.Base);e.Clear=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){var n=function(){return function(n){void 0===n&&(n=null),this.checkConnectionAndExecuteLogic=function(n){switch(e.log("checking connection and executing request:"+n.Name),n.Name){case"create_db":case"open_db":this.executeLogic(n);break;case"change_log_status":this.changeLogStatus(n);default:switch(e.Status.ConStatus){case e.ConnectionStatus.Connected:this.executeLogic(n);break;case e.ConnectionStatus.Closed:var r=this;this.openDb(t.ActiveDataBase.Name,function(){r.checkConnectionAndExecuteLogic(n)})}}},this.changeLogStatus=function(t){!0===t.Query.logging?e.EnableLog=!0:e.EnableLog=!1},this.returnResult=function(e){this.OnSuccess?this.OnSuccess(e):self.postMessage(e)},this.executeLogic=function(e){var t=this,n=function(e){t.returnResult({ReturnedValue:e})},r=function(e){t.returnResult({ErrorOccured:!0,ErrorDetails:e})};switch(e.Name){case"select":this.select(e.Query,n,r);break;case"insert":this.insert(e.Query,n,r);break;case"update":this.update(e.Query,n,r);break;case"delete":this.delete(e.Query,n,r);break;case"open_db":this.openDb(e.Query,n,r);break;case"create_db":this.createDb(e.Query,n,r);break;case"clear":this.clear(e.Query,n,r);break;case"drop_db":this.dropDb(n,r);break;case"count":this.count(e.Query,n,r);break;case"bulk_insert":this.bulkInsert(e.Query,n,r);break;case"export_json":this.exportJson(e.Query,n,r)}},this.openDb=function(n,r,o){KeyStore.get("JsStore_"+n+"_Db_Version",function(s){if(null==s)throw e.Utils.getError(e.ErrorType.DbNotExist,{DbName:n});KeyStore.get("JsStore_"+n+"_Schema",function(e){t.ActiveDataBase=e,new t.OpenDb(s,r,o)})})},this.closeDb=function(){e.Status.ConStatus==e.ConnectionStatus.Connected&&t.DbConnection.close()},this.dropDb=function(e,n){new t.DropDb(t.ActiveDataBase.Name,e,n)},this.update=function(e,n,r){new t.Update.Instance(e,n,r)},this.insert=function(n,r,o){Array.isArray(n.Values)?new t.Insert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.bulkInsert=function(n,r,o){Array.isArray(n.Values)?new t.BulkInsert(n,r,o):e.throwError("Value should be array :- supplied value is not array")},this.delete=function(e,n,r){new t.Delete.Instance(e,n,r)},this.select=function(e,n,r){"object"==typeof e.From?new t.Select.Join(e,n,r):new t.Select.Instance(e,n,r)},this.count=function(e,n,r){"object"==typeof e.From?(e.Count=!0,new t.Select.Join(e,n,r)):new t.Count.Instance(e,n,r)},this.createDb=function(n,r,o){KeyStore.get("JsStore_"+n.Name+"_Db_Version",function(s){e.DbVersion=s,t.ActiveDataBase=new e.Model.DataBase(n);var u=function(){setTimeout(function(){var n=t.ActiveDataBase.Tables[t.ActiveDataBase.Tables.length-1];KeyStore.get("JsStore_"+t.ActiveDataBase.Name+"_"+n.Name+"_Version",function(s){s==n.Version?new t.CreateDb(e.DbVersion,r,o):u()})},200)};u()})},this.clear=function(e,n,r){new t.Clear(e,n,r)},this.exportJson=function(e,t,n){this.select(e,function(e){var n=URL.createObjectURL(new Blob([JSON.stringify(e)],{type:"text/json"}));t(n)},function(e){n(e)})},this.OnSuccess=n}}();t.Main=n}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.Results=[],t.Sorted=!1,t.CheckFlag=!1,t.removeDuplicates=function(){var e=this.Results;this.Results=void 0;var t=this.getPrimaryKey(this.Query.From),n={};for(var r in e)n[e[r][t]]=e[r];e=[];for(r in n)e.push(n[r]);this.Results=e},t}return __extends(t,e),t}(e.Base);t.BaseSelect=n}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){!function(t){var n=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var t,n,r=this;if(this.Query.Order&&this.Query.Order.By)if(r.ObjectStore.indexNames.contains(this.Query.Order.By)){var o=this.Query.Order.Type&&"desc"==this.Query.Order.Type.toLowerCase()?"prev":"next";this.Sorted=!0,n=this.ObjectStore.index(r.Query.Order.By).openCursor(null,o)}else{var s=e.Utils.getError(e.ErrorType.ColumnNotExist,{ColumnName:this.Query.Order.By});e.throwError(s)}else n=this.ObjectStore.openCursor();this.SkipRecord&&this.LimitRecord?function(){var e=!1;n.onsuccess=function(n){(t=n.target.result)&&(e&&r.Results.length!=r.LimitRecord?(r.Results.push(t.value),t.continue()):(e=!0,t.advance(r.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;n.onsuccess=function(n){(t=n.target.result)&&(e?(r.Results.push(t.value),t.continue()):(e=!0,t.advance(r.SkipRecord)))}}():this.LimitRecord?n.onsuccess=function(e){(t=e.target.result)&&r.Results.length!=r.LimitRecord&&(r.Results.push(t.value),t.continue())}:n.onsuccess=function(e){(t=e.target.result)&&(r.Results.push(t.value),t.continue())},n.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}},n}return __extends(n,t),n}(t.BaseSelect);t.NotWhere=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeSkipAndLimitForIn=function(e,t){var n,r=this.SkipRecord,o=this,s=this.ObjectStore.index(e),u=function(e){0==r?o.Results.push(e):--r};if(o.CheckFlag)for(var i=0,c=t.length;i=0&&(n=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(n=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(n=!0)}return n},n.executeSkipAndLimit=function(){var e,t=this.SkipRecord,n=this,r=function(e){0==t?n.Results.push(e):--t};n.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,n.Results.length!=n.LimitRecord&&e&&(n.filterOnOccurence(e.key)&&n.checkForWhereConditionMatch(e.value)&&r(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){e=t.target.result,n.Results.length!=n.LimitRecord&&e&&(n.filterOnOccurence(e.key)&&r(e.value),e.continue())}},n.executeSkip=function(){var e,t=this.SkipRecord,n=this,r=function(e){0==t?n.Results.push(e):--t};n.CheckFlag?this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(n.filterOnOccurence(e.key)&&n.checkForWhereConditionMatch(e.value)&&r(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(t){(e=t.target.result)&&(n.filterOnOccurence(e.key)&&r(e.value),e.continue())}},n.executeLimit=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(n){e=n.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.key)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(n){e=n.target.result,t.Results.length!=t.LimitRecord&&e&&(t.filterOnOccurence(e.key)&&t.Results.push(e.value),e.continue())}},n.executeSimple=function(){var e,t=this;t.CheckFlag?this.CursorOpenRequest.onsuccess=function(n){(e=n.target.result)&&(t.filterOnOccurence(e.key)&&t.checkForWhereConditionMatch(e.value)&&t.Results.push(e.value),e.continue())}:this.CursorOpenRequest.onsuccess=function(n){(e=n.target.result)&&(t.filterOnOccurence(e.key)&&t.Results.push(e.value),e.continue())}},n.executeLikeLogic=function(e,t,n){var r=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?this.executeSkipAndLimit():this.SkipRecord?this.executeSkip():this.LimitRecord?this.executeLimit():this.executeSimple()},n}return __extends(n,t),n}(t.In);t.Like=n}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,(r=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},this.SkipRecord&&this.LimitRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e&&s.Results.length!=s.LimitRecord?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.SkipRecord?function(){var e=!1;s.CheckFlag?r.onsuccess=function(t){(o=t.target.result)&&(e?(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}:r.onsuccess=function(t){(o=t.target.result)&&(e?(s.Results.push(o.value),o.continue()):(e=!0,o.advance(s.SkipRecord)))}}():this.LimitRecord?s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&s.checkForWhereConditionMatch(o.value)&&(s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&s.Results.length!=s.LimitRecord&&(s.Results.push(o.value),o.continue())}:s.CheckFlag?r.onsuccess=function(e){(o=e.target.result)&&(s.checkForWhereConditionMatch(o.value)&&s.Results.push(o.value),o.continue())}:r.onsuccess=function(e){(o=e.target.result)&&(s.Results.push(o.value),o.continue())}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(t){function n(n,r,o){var s=t.call(this)||this;s.QueryStack=[],s.CurrentQueryStackIndex=0,s.onTransactionCompleted=function(e){null!=this.OnSuccess&&this.QueryStack.length==this.CurrentQueryStackIndex+1&&(this.Query.Count?this.OnSuccess(this.Results.length):(this.Query.Skip&&this.Query.Limit?(this.Results.splice(0,this.Query.Skip),this.Results.splice(this.Query.Limit-1,this.Results.length)):this.Query.Skip?this.Results.splice(0,this.Query.Skip):this.Query.Limit&&this.Results.splice(this.Query.Limit-1,this.Results.length),this.OnSuccess(this.Results)))},s.executeWhereJoinLogic=function(t,n){var r,o=this,s=[],u=0,i=(n.Column,o.Results),c=i.length;new e.Instance({From:n.Table,Where:n.Where,Order:n.Order},function(e){e.forEach(function(e,n){for(var o=0;oo.CurrentQueryStackIndex+1?o.startExecutionJoinLogic():o.onTransactionCompleted(null)},function(e){o.onErrorOccured(e)});var a=function(e,t,r){if(s[u]={},e==t[n.Column]){s[u][n.Table]=t;for(c=0;cr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null)},function(e){r.ErrorOccured=!0,r.onErrorOccured(e)})},s.executeWhereUndefinedLogicForJoin=function(t,n){var r=this,o=[],s=0,u=(n.Column,r.Results),i=u.length,c=0,a={},l=function(){c0)e.forEach(function(e){o[s]={},o[s][n.Table]=e;for(var t=0;tr.CurrentQueryStackIndex+1?r.startExecutionJoinLogic():r.onTransactionCompleted(null))};l()},s.OnSuccess=r,s.OnError=o,s.Query=n;var u=s,i=[],c=function(e){return e.hasOwnProperty("Table1")?(e.Table2.JoinType=void 0==e.Join?"inner":e.Join.toLowerCase(),u.QueryStack.push(e.Table2),u.QueryStack.length%2==0&&(u.QueryStack[u.QueryStack.length-1].NextJoin=e.NextJoin),i.push(e.Table2.Table),c(e.Table1)):(u.QueryStack.push(e),void i.push(e.Table))};return c(n.From),s.QueryStack.reverse(),s.ErrorOccured||new e.Instance({From:s.QueryStack[0].Table,Where:s.QueryStack[0].Where},function(e){var t=u.QueryStack[0].Table;e.forEach(function(e,n){u.Results[n]={},u.Results[n][t]=e}),u.startExecutionJoinLogic()},function(e){u.onErrorOccured(e)}),s}return __extends(n,t),n.prototype.startExecutionJoinLogic=function(){var e;this.CurrentQueryStackIndex>=1&&this.CurrentQueryStackIndex%2==1?(e={Table:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Table,Column:this.QueryStack[this.CurrentQueryStackIndex].NextJoin.Column},this.CurrentQueryStackIndex++):e=this.QueryStack[this.CurrentQueryStackIndex++];var t=this.QueryStack[this.CurrentQueryStackIndex];"right"==t.JoinType?this.executeRightJoin(e,t):t.Where?this.executeWhereJoinLogic(e,t):this.executeWhereUndefinedLogicForJoin(e,t)},n}(e.BaseSelect);e.Join=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=e.call(this)||this;return t.executeAggregateGroupBy=function(){var e=this.Query.GroupBy,t=this.Results,n={};this.Results=void 0;var r=this.Query.Aggregate;this.Query.Aggregate=void 0;var o,s,u,i,c=function(){for(var e in r)switch(e){case"Count":var c=function(){return u=n[s],u=u?u["Count("+i+")"]:0,u+=t[o][i]?1:0};if("string"==typeof r[e])i=r[e],t[o]["Count("+i+")"]=c();else if(Array.isArray(r[e]))for(var a in r[e])i=r[e][a],t[o]["Count("+i+")"]=c();break;case"Max":var l=function(){return u=n[s],u=u?u["Max("+i+")"]:0,t[o][i]=t[o][i]?t[o][i]:0,u>t[o][i]?u:t[o][i]};if("string"==typeof r[e])i=r[e],t[o]["Max("+i+")"]=l();else if(Array.isArray(r[e]))for(var a in r[e])i=r[e][a],t[o]["Max("+i+")"]=l();break;case"Min":var h=function(){return u=n[s],u=u?u["Min("+i+")"]:1/0,t[o][i]=t[o][i]?t[o][i]:1/0,u0&&!this.Sorted&&e.By){e.Type=e.Type?e.Type.toLowerCase():"asc";var t=this,n=e.By;"string"==typeof this.Results[0][n]?"asc"==e.Type?t.Results.sort(function(e,t){return e[n].toLowerCase().localeCompare(t[n].toLowerCase())}):t.Results.sort(function(e,t){return t[n].toLowerCase().localeCompare(e[n].toLowerCase())}):"number"==typeof this.Results[0][n]&&("asc"==e.Type?t.Results.sort(function(e,t){return e[n]-t[n]}):t.Results.sort(function(e,t){return t[n]-e[n]}))}},t.processAggregateQry=function(){var e,t=this.Results,n={};this.Results=void 0;for(var r in this.Query.Aggregate)switch(r){case"Count":var o=function(){var n=0;for(var r in t)n+=t[r][e]?1:0;return n};if("string"==typeof this.Query.Aggregate[r])n["Count("+(e=this.Query.Aggregate[r])+")"]=o();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Count("+(e=this.Query.Aggregate[r][s])+")"]=o();break;case"Max":var u=function(){var n=0;for(var r in t)n=n>t[r][e]?n:t[r][e];return n};if("string"==typeof this.Query.Aggregate[r])n["Max("+(e=this.Query.Aggregate[r])+")"]=u();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Max("+(e=this.Query.Aggregate[r][s])+")"]=u();break;case"Min":var i=function(){var n=1/0,r=1/0;for(var o in t)n=n<(r=t[o][e]?t[o][e]:1/0)?n:r;return n};if("string"==typeof this.Query.Aggregate[r])n["Min("+(e=this.Query.Aggregate[r])+")"]=i();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Min("+(e=this.Query.Aggregate[r][s])+")"]=i();break;case"Sum":var c=function(){var n=0;for(var r in t)n+=t[r][e];return n};if("string"==typeof this.Query.Aggregate[r])n["Sum("+(e=this.Query.Aggregate[r])+")"]=c();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Sum("+(e=this.Query.Aggregate[r][s])+")"]=c();break;case"Avg":var a=function(){var n=0;for(var r in t)n+=t[r][e];return n/t.length};if("string"==typeof this.Query.Aggregate[r])n["Avg("+(e=this.Query.Aggregate[r])+")"]=a();else if(Array.isArray(this.Query.Aggregate[r]))for(var s in this.Query.Aggregate[r])n["Avg("+(e=this.Query.Aggregate[r][s])+")"]=a()}for(var r in n)t[0][r]=n[r];this.Results=t},t}return __extends(t,e),t}(e.GroupByHelper);e.Helper=t}(e.Select||(e.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){if(this.SendResultFlag){if(this.processOrderBy(),this.Query.Distinct){var e=[],t=this.Results[0];for(var n in t)e.push(n);var r=this.getPrimaryKey(this.Query.From),o=e.indexOf(r);e.splice(o,1),this.Query.GroupBy=e.length>0?e:null}this.Query.GroupBy?this.Query.Aggregate?this.executeAggregateGroupBy():this.processGroupBy():this.Query.Aggregate&&this.processAggregateQry(),this.OnSuccess(this.Results)}},u.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readonly"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.orQuerySuccess=function(){this.Results=this.OrInfo.Results,this.OrInfo.Results=void 0,this.removeDuplicates(),this.OrInfo.OnSucess(this.Results)},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess,Results:[]},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){if(this.OrInfo.Results=this.OrInfo.Results.concat(this.Results),!this.Query.Limit||this.Query.Limit>this.OrInfo.Results.length){this.Results=[];var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.orQuerySuccess()}else this.orQuerySuccess()}};var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s,u.SkipRecord=u.Query.Skip,u.LimitRecord=u.Query.Limit;try{u.Transaction=t.DbConnection.transaction([r.From],"readonly"),u.Transaction.oncomplete=function(e){i.onTransactionCompleted()},u.Transaction.ontimeout=i.onTransactionCompleted,u.ObjectStore=u.Transaction.objectStore(r.From),r.Where?(r.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:r.From})}return u}return __extends(r,n),r}(n.Helper);n.Instance=r}(t.Select||(t.Select={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ResultCount=0,t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseCount=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e=this;if(this.ObjectStore.count){var t=this.ObjectStore.count();t.onsuccess=function(){e.ResultCount=t.result},t.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}else{var n,r=this.ObjectStore.openCursor();r.onsuccess=function(t){(n=t.target.result)&&(++e.ResultCount,n.continue())},r.onerror=function(t){e.ErrorOccured=!0,e.onErrorOccured(t)}}},t}return __extends(t,e),t}(e.BaseCount);e.NotWhere=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var n,r,o=this,s=this.ObjectStore.index(e);if(o.CheckFlag)for(var u=0,i=t.length;u=0&&(n=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(n=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.key)&&o.checkForWhereConditionMatch(r.value)&&++o.ResultCount,r.continue())}:this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.key)&&++o.ResultCount,r.continue())}},n}return __extends(n,t),n}(t.In);t.Like=n}(t.Count||(t.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r=this;if(t=n?t[n]:t,r.CheckFlag){(u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n))).onsuccess=function(e){(s=e.target.result)&&(r.checkForWhereConditionMatch(s.value)&&++r.ResultCount,s.continue())},u.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else if(this.ObjectStore.count){var o=this.ObjectStore.index(e).count(this.getKeyRange(t,n));o.onsuccess=function(){r.ResultCount=o.result},o.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}else{var s,u=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n));u.onsuccess=function(e){(s=e.target.result)&&(++r.ResultCount,s.continue())},u.onerror=function(e){r.ErrorOccured=!0,r.onErrorOccured(e)}}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(t){function n(n,r,o){var s=t.call(this)||this;s.onTransactionCompleted=function(){this.SendResultFlag&&this.OnSuccess(this.ResultCount)};var u=s;s.Query=n,s.OnSuccess=r,s.OnError=o;try{var i=function(){u.Transaction=e.DbConnection.transaction([n.From],"readonly"),u.ObjectStore=u.Transaction.objectStore(n.From),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};void 0!=n.Where?n.Where.Or?new e.Select.Instance(n,function(e){u.ResultCount=e.length,u.onTransactionCompleted()},s.OnError):(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}catch(e){s.onExceptionOccured(e,{TableName:n.From})}return s}return __extends(n,t),n}(t.Where);t.Instance=n}(e.Count||(e.Count={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){(e.Update||(e.Update={})).updateValue=function(e,t){for(var n in e)if("object"!=typeof e[n])t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;default:t[n]=e[n]}break}return t};var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);e.BaseUpdate=t}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.executeWhereUndefinedLogic=function(){var e,n=this,r=this.ObjectStore.openCursor();r.onsuccess=function(r){(e=r.target.result)&&(e.update(t.updateValue(n.Query.Set,e.value)),++n.RowAffected,e.continue())},r.onerror=function(e){n.ErrorOccured=!0,n.onErrorOccured(e)}},n}return __extends(n,e),n}(e.BaseUpdate);t.NotWhere=n}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeInLogic=function(t,n){var r,o,s=this,u=this.ObjectStore.index(t);if(s.CheckFlag)for(var i=0,c=n.length;i=0&&(n=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(n=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(n=!0)}return n},r.executeLikeLogic=function(e,n,r){var o,s=this;this.CompValue=n.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=r,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)},s.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.key)&&s.checkForWhereConditionMatch(o.value)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}:this.CursorOpenRequest.onsuccess=function(e){(o=e.target.result)&&(s.filterOnOccurence(o.key)&&(o.update(t.updateValue(s.Query.Set,o.value)),++s.RowAffected),o.continue())}},r}return __extends(r,n),r}(t.In);t.Like=n}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(t){function n(){var n=null!==t&&t.apply(this,arguments)||this;return n.executeWhereLogic=function(t,n,r){var o,s,u=this;n=r?n[r]:n,s=this.ObjectStore.index(t).openCursor(this.getKeyRange(n,r)),u.CheckFlag?s.onsuccess=function(t){(o=t.target.result)&&(u.checkForWhereConditionMatch(o.value)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected),o.continue())}:s.onsuccess=function(t){(o=t.target.result)&&(o.update(e.updateValue(u.Query.Set,o.value)),++u.RowAffected,o.continue())},s.onerror=function(e){u.ErrorOccured=!0,u.onErrorOccured(e)}},n}return __extends(n,t),n}(e.Like);e.Where=t}(e.Update||(e.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){!function(n){var r=function(n){function r(e,r,o){var s=n.call(this)||this;s.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},s.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.In],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.In),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},s.executeOrLogic=function(){var e=this;new t.Select.Instance({From:this.Query.In,Where:this.Query.Where},function(t){var n=e.getPrimaryKey(e.Query.In),r=[],o={};t.forEach(function(e){r.push(e[n])}),o[n]={In:r},e.createtransactionForOrLogic({In:e.Query.In,Where:o,Set:e.Query.Set})},this.OnError)};try{if(s.OnSuccess=r,s.OnError=o,s.checkSchema(e.Set,e.In),s.ErrorOccured)s.onErrorOccured(s.Error,!0);else{s.Query=e;var u=s,i=function(){u.Transaction=t.DbConnection.transaction([e.In],"readwrite"),u.ObjectStore=u.Transaction.objectStore(e.In),u.Transaction.oncomplete=function(e){u.onTransactionCompleted()},u.Transaction.ontimeout=u.onTransactionTimeout};e.Where?e.Where.Or?s.executeOrLogic():(i(),s.goToWhereLogic()):(i(),s.executeWhereUndefinedLogic())}}catch(t){s.onExceptionOccured(t,{TableName:e.In})}return s}return __extends(r,n),r.prototype.checkSchema=function(t,n){if(t){var r=this.getTable(n),o=this;if(r){var s=function(t,n){o.ErrorOccured=!0,o.Error=e.Utils.getError(t,n)};r.Columns.every(function(n){if(o.ErrorOccured)return!1;if(n.Name in t){!function(t){if(n.NotNull&&e.isNull(t)&&s(e.ErrorType.NullValue,{ColumnName:n.Name}),n.DataType){var r=typeof t;if(r!=n.DataType)if("object"!=r)s(e.ErrorType.BadDataType,{ColumnName:n.Name});else{var o=["+","-","*","/"];for(var u in t){o.indexOf(u)<0&&s(e.ErrorType.BadDataType,{ColumnName:n.Name});break}}}}(t[n.Name])}return!0})}else{var u=e.Utils.getError(e.ErrorType.TableNotExist,{TableName:n});e.throwError(u)}}else this.ErrorOccured=!0,this.OnSuccess(0)},r}(n.Where);n.Instance=r}(t.Update||(t.Update={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(t){var n=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.CheckFlag=!1,t}return __extends(t,e),t}(e.Base);t.BaseDelete=n}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereUndefinedLogic=function(){var e,t=this,n=this.ObjectStore.openCursor();n.onsuccess=function(n){(e=n.target.result)&&(e.delete(),++t.RowAffected,e.continue())},n.onerror=function(e){t.ErrorOccured=!0,t.onErrorOccured(e)}},t}return __extends(t,e),t}(e.BaseDelete);e.NotWhere=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeInLogic=function(e,t){var n,r,o=this;this.ObjectStore.index(e);if(o.CheckFlag)for(var s=0,u=t.length;s=0&&(n=!0);break;case e.Occurence.First:0==t.indexOf(this.CompValue)&&(n=!0);break;default:t.lastIndexOf(this.CompValue)==t.length-this.CompValueLength&&(n=!0)}return n},n.executeLikeLogic=function(e,t,n){var r,o=this;this.CompValue=t.toLowerCase(),this.CompValueLength=this.CompValue.length,this.CompSymbol=n,this.Column=e,this.CursorOpenRequest=this.ObjectStore.index(e).openCursor(),this.CursorOpenRequest.onerror=function(e){o.ErrorOccured=!0,o.onErrorOccured(e)},o.CheckFlag?this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.key)&&o.checkForWhereConditionMatch(r.value)&&(r.delete(),++o.RowAffected),r.continue())}:this.CursorOpenRequest.onsuccess=function(e){(r=e.target.result)&&(o.filterOnOccurence(r.key)&&(r.delete(),++o.RowAffected),r.continue())}},n}return __extends(n,t),n}(t.In);t.Like=n}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(e){!function(e){var t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.executeWhereLogic=function(e,t,n){var r,o,s=this;t=n?t[n]:t,o=this.ObjectStore.index(e).openCursor(this.getKeyRange(t,n)),s.CheckFlag?o.onsuccess=function(e){(r=e.target.result)&&(s.checkForWhereConditionMatch(r.value)&&(r.delete(),++s.RowAffected),r.continue())}:o.onsuccess=function(e){(r=e.target.result)&&(r.delete(),++s.RowAffected,r.continue())},o.onerror=function(e){s.ErrorOccured=!0,s.onErrorOccured(e)}},t}return __extends(t,e),t}(e.Like);e.Where=t}(e.Delete||(e.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){!function(t){!function(n){var r=function(n){function r(r,o,s){var u=n.call(this)||this;u.onTransactionCompleted=function(){this.OnSuccess(this.RowAffected)},u.createtransactionForOrLogic=function(e){var n=this;this.Query=e;try{this.Transaction=t.DbConnection.transaction([e.From],"readwrite"),this.Transaction.oncomplete=function(e){n.onTransactionCompleted()},this.Transaction.ontimeout=n.onTransactionCompleted,this.ObjectStore=this.Transaction.objectStore(e.From),this.goToWhereLogic()}catch(t){this.onExceptionOccured(t,{TableName:e.From})}},u.executeOrLogic=function(){this.OrInfo={OrQuery:this.Query.Where.Or,OnSucess:this.OnSuccess},this.TmpQry={From:this.Query.From,Where:{}};this.Query.Where.Or=void 0,this.OnSuccess=function(){var t=e.getObjectFirstKey(this.OrInfo.OrQuery);null!=t?(this.TmpQry.Where[t]=this.OrInfo.OrQuery[t],delete this.OrInfo.OrQuery[t],this.createtransactionForOrLogic(this.TmpQry)):this.OrInfo.OnSucess(this.RowAffected)}};try{var i=u;u.Query=r,u.OnSuccess=o,u.OnError=s,u.Transaction=t.DbConnection.transaction([r.From],"readwrite"),u.ObjectStore=u.Transaction.objectStore(r.From),u.Transaction.oncomplete=function(){i.onTransactionCompleted()},u.Transaction.onerror=function(e){i.onErrorOccured(e)},r.Where?(r.Where.Or&&u.executeOrLogic(),u.goToWhereLogic()):u.executeWhereUndefinedLogic()}catch(e){u.onExceptionOccured(e,{TableName:r.From})}return u}return __extends(r,n),r}(n.Where);n.Instance=r}(t.Delete||(t.Delete={}))}(e.Business||(e.Business={}))}(JsStore||(JsStore={}));!function(e){e.WorkerStatus=e.WebWorkerStatus.NotStarted;var t=function(){function t(){this.RequestQueue=[],this.IsCodeExecuting=!1,this.pushApi=function(e,t){if(!0===t){var n=this;return new Promise(function(t,r){e.OnSuccess=function(e){t(e)},e.OnError=function(e){r(e)},n.prcoessExecutionOfCode(e)})}return this.prcoessExecutionOfCode(e),this},this.prcoessExecutionOfCode=function(t){if(e.Status.ConStatus==e.ConnectionStatus.NotStarted)switch(t.Name){case"create_db":case"open_db":this.RequestQueue.splice(0,0,t),e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode(),e.Status.ConStatus=e.ConnectionStatus.Connected;break;default:this.RequestQueue.push(t)}else this.RequestQueue.push(t),1==this.RequestQueue.length&&e.WorkerStatus!=e.WebWorkerStatus.NotStarted&&this.executeCode();e.log("request pushed: "+t.Name)},this.executeCode=function(){if(!this.IsCodeExecuting&&this.RequestQueue.length>0){this.IsCodeExecuting=!0;var t=this.RequestQueue[0],n={Name:t.Name,Query:t.Query};e.log("request executing : "+t.Name),e.WorkerStatus==e.WebWorkerStatus.Registered?this.executeCodeUsingWorker(n):this.executeCodeDirect(n)}},this.executeCodeDirect=function(t){var n=this;new e.Business.Main(function(e){n.processFinishedRequest(e)}).checkConnectionAndExecuteLogic(t)},this.executeCodeUsingWorker=function(t){e.WorkerInstance.postMessage(t)},this.processFinishedRequest=function(t){var n=this.RequestQueue.shift();this.IsCodeExecuting=!1,n&&(e.log("request finished : "+n.Name),t.ErrorOccured?n.OnError&&n.OnError(t.ErrorDetails):n.OnSuccess&&(null!=t.ReturnedValue?n.OnSuccess(t.ReturnedValue):n.OnSuccess()),this.executeCode())},this.onWorkerFailed=function(){e.WorkerStatus=e.WebWorkerStatus.Failed,e.Status.ConStatus==e.ConnectionStatus.NotStarted&&this.executeCode()},this.createWorker=function(){var t=this;try{if(Worker){var n=this.getScriptUrl();n&&n.length>0?(e.WorkerInstance=new Worker(n),e.WorkerInstance.onmessage=function(e){t.onMessageFromWorker(e)},t.executeCodeUsingWorker({Name:"change_log_status",Query:{logging:e.EnableLog}}),setTimeout(function(){e.WorkerStatus!=e.WebWorkerStatus.Failed&&(e.WorkerStatus=e.WebWorkerStatus.Registered),e.Status.ConStatus==e.ConnectionStatus.Connected&&t.executeCode()},100)):t.onWorkerFailed()}else t.onWorkerFailed()}catch(e){t.onWorkerFailed()}},this.onMessageFromWorker=function(e){if("string"==typeof e.data){switch(e.data.split(":")[1]){case"WorkerFailed":this.onWorkerFailed()}}else this.processFinishedRequest(e.data)}}return t.prototype.getScriptUrl=function(e){for(var t="",n=e?e.toLowerCase():"jsstore",r=document.getElementsByTagName("script"),o=r.length-1,s="";o>=0;o--)if(s=r[o].src,(s=s.substring(s.lastIndexOf("/")+1).toLowerCase()).length>0&&s.indexOf(n)>=0)return t=r[o].src;return t},t}();e.CodeExecutionHelper=t}(JsStore||(JsStore={}));var JsStore,Model=JsStore.Model,DataBase=Model.DataBase,Column=Model.Column,Table=Model.Table;!function(e){var t=function(t){function n(n){void 0===n&&(n=null);var r=t.call(this)||this;return r.openDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.pushApi({Name:"open_db",Query:e,OnSuccess:t,OnError:n},!1)},r.createDb=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this.pushApi({Name:"create_db",OnSuccess:t,OnError:n,Query:e},!1)},r.dropDb=function(e,t){void 0===t&&(t=null);var n=!e;return this.pushApi({Name:"drop_db",OnSuccess:e,OnError:t},n)},r.select=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"select",Query:e,OnSuccess:t,OnError:n},r)},r.count=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"count",Query:e,OnSuccess:t,OnError:n},r)},r.insert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"insert",Query:e,OnSuccess:t,OnError:n},r)},r.update=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"update",Query:e,OnSuccess:t,OnError:n},r)},r.delete=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n,e.OnSuccess=e.OnError=null;var r=!t;return this.pushApi({Name:"delete",Query:e,OnSuccess:t,OnError:n},r)},r.clear=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r=!t;return this.pushApi({Name:"clear",Query:e,OnSuccess:t,OnError:onerror},r)},r.bulkInsert=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),t=e.OnSuccess?e.OnSuccess:t,n=e.OnError?e.OnError:n;var r=!t;return e.OnSuccess=e.OnError=null,this.pushApi({Name:"bulk_insert",Query:e,OnSuccess:t,OnError:n},r)},r.exportJson=function(e){var t=function(t){var n=document.createElement("a");n.href=t,n.download=e.From+".json",n.click(),r&&r()},n=e.OnError,r=e.OnSuccess;e.OnSuccess=e.OnError=void 0;var o=!r;if(o)return new Promise(function(r,s){this.pushApi({Name:"export_json",Query:e,OnSuccess:t,OnError:n},o).then(function(e){t(e),r()}).catch(function(e){s(e)})});this.pushApi({Name:"export_json",Query:e,OnSuccess:t,OnError:n},o)},e.WorkerStatus==e.WebWorkerStatus.Registered?e.WorkerInstance.terminate():e.WorkerStatus==e.WebWorkerStatus.NotStarted&&KeyStore.init(),r.createWorker(),n&&r.openDb(n),r}return __extends(n,t),n}(e.CodeExecutionHelper);e.Instance=t}(JsStore||(JsStore={})),self&&!self.alert&&(self.onmessage=function(e){JsStore.log("Request executing from WebWorker, request name: "+e.data.Name);var t=e.data;(new JsStore.Business.Main).checkConnectionAndExecuteLogic(t)},JsStore.WorkerStatus=JsStore.WebWorkerStatus.Registered,KeyStore.init()); \ No newline at end of file diff --git a/Dist/V 1.3/V 1.3.1/jsstore.min.js.map b/Dist/V 1.3/V 1.3.1/jsstore.min.js.map deleted file mode 100644 index f68c8265..00000000 --- a/Dist/V 1.3/V 1.3.1/jsstore.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["output/jsstore.js"],"names":["__extends","this","extendStatics","Object","setPrototypeOf","__proto__","Array","d","b","p","hasOwnProperty","__","constructor","prototype","create","KeyStore","Utils","setDbType","self","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","IDBTransaction","webkitIDBTransaction","msIDBTransaction","IDBKeyRange","webkitIDBKeyRange","msIDBKeyRange","alert","JsStore","Status","ConStatus","ConnectionStatus","UnableToStart","LastError","ErrorType","IndexedDbUndefined","postMessage","RequestQueue","TableName","IsCodeExecuting","prcoessExecutionOfCode","request","push","length","executeCode","Request","Name","Query","executeCodeDirect","That","Business","Main","results","processFinishedRequest","checkConnectionAndExecuteLogic","message","FinishedRequest","shift","ErrorOccured","OnError","ErrorDetails","OnSuccess","ReturnedValue","Base","Results","ErrorCount","onErrorOccured","e","target","error","Get","_super","query","onSuccess","onError","_this","call","get","getData","column","value","CursorOpenRequest","ObjectStore","index","openCursor","only","onerror","onsuccess","Cursor","result","Where","Transaction","DbConnection","transaction","From","objectStore","oncomplete","Set","setData","insertData","add","update","updateIfExistElseInsert","ex","Remove","RowAffected","remove","removeData","delete","continue","Column","InitDb","dbName","tableName","DbRequest","open","event","name","IndexedDbBlocked","Connected","onclose","Closed","onversionchange","newVersion","close","onabort","onupgradeneeded","createObjectStore","keyPath","createIndex","unique","NotStarted","executeLogic","setTimeout","createDb","returnResult","err","set","init","key","Key","Value","Occurence","WebWorkerStatus","WhereQryOption","DataType","EnableLog","DbVersion","TempResults","throwError","getObjectFirstKey","log","msg","logError","getError","errorType","errorDetail","Error","Message","NotArray","UndefinedColumn","UndefinedValue","UndefinedColumnName","UndefinedColumnValue","NoValueSupplied","InvalidOp","ColumnNotExist","NullValue","BadDataType","NextJoinNotExist","TableNotExist","DbNotExist","convertObjectintoLowerCase","obj","keys","n","toLowerCase","isDbExist","dbInfo","callback","errCallBack","UsePromise","Promise","resolve","reject","getDbVersion","dbVersion","Boolean","DbName","Table","Version","Number","getDbSchema","isNull","isNaN","enableLog","WorkerInstance","logging","disableLog","Model","AutoIncrement","PrimaryKey","Unique","NotNull","Default","table","Columns","RequireDelete","RequireCreation","undefined","forEach","item","setRequireDelete","setDbVersion","setPrimaryKey","tableVersion","DataBase","dataBase","Tables","BaseHelper","getTable","CurrentTable","ActiveDataBase","every","getKeyRange","op","KeyRange","bound","Low","High","lowerBound","upperBound","getObjectSecondKey","IsSecond","getPrimaryKey","getKeyPath","sortNumberInAsc","values","sort","a","sortNumberInDesc","sortAlphabetInAsc","localeCompare","sortAlphabetInDesc","getCombination","word","doAndPushCombination","chars","join","ch","charAt","toUpperCase","getAllCombinationOfWord","isArray","i","concat","apply","arguments","SendResultFlag","customError","onTransactionTimeout","onExceptionOccured","info","goToWhereLogic","IgnoreCase","makeQryInCaseSensitive","indexNames","contains","CheckFlag","FilterValue","Like","split","executeLikeLogic","Any","Last","First","executeInLogic","executeWhereLogic","ColumnName","qry","ColumnValue","KeyValue","In","checkForWhereConditionMatch","rowValue","checkIn","Values","checkLike","CompSymbol","CompValue","SymbolIndex","indexOf","lastIndexOf","checkComparisionOp","symbol","CompareValue","CreateDb","DbCreatedList","db","objectStoreNames","deleteObjectStore","dbConnection","Store","autoIncrement","DropDb","deleteDb","DbDropRequest","deleteDatabase","onblocked","InsertHelper","ValuesAffected","onTransactionCompleted","Return","checkModifyInsertValues","ValueIndex","checkDatas","checkInternal","checkAndModifyValue","Index","checkAndModifyColumn","onValidationError","details","CheckNotNullAndDataType","columnValue","Insert","insertDataintoTable","IsReturn","AddResult","Into","SkipDataCheck","BulkInsert","ValuesIndex","bulkinsertData","OpenDb","Clear","ClearRequest","clear","changeLogStatus","openDb","select","insert","dropDb","count","bulkInsert","exportJson","closeDb","Update","Instance","Delete","Select","Join","Count","version","createDbInternal","LastTable","Url","URL","createObjectURL","Blob","JSON","stringify","type","BaseSelect","Sorted","removeDuplicates","Datas","lookupObject","NotWhere","executeWhereUndefinedLogic","Order","By","OrderType","Type","SkipRecord","LimitRecord","RecordSkipped","advance","executeSkipAndLimit","executeSkip","executeSkipAndLimitForIn","Skip","ColumnStore","skipOrPush","executeSkipForIn","executeLimitForIn","executeSimpleForIn","filterOnOccurence","Found","CompValueLength","executeLimit","executeSimple","QueryStack","CurrentQueryStackIndex","splice","executeWhereJoinLogic","joinQuery","Item","JoinIndex","TmpResults","ResultLength","doJoin","startExecutionJoinLogic","value1","value2","itemIndex","j","JoinType","executeRightJoin","ItemIndex","ValueFound","doRightJoin","executeWhereUndefinedLogicForJoin","TableList","convertQueryIntoStack","Table2","NextJoin","Table1","reverse","JoinQuery","GroupByHelper","executeAggregateGroupBy","GrpQry","GroupBy","LookUpObj","AggregateQry","Aggregate","ObjKey","AggrColumn","calculateAggregate","prop","getCount","getMax","getMin","Infinity","getSum","getAvg","Sum","Avg","IsCountTypeString","IsSumTypeString","AvgColumn","processGroupBy","Helper","processOrderBy","OrderColumn","processAggregateQry","Result","Distinct","createtransactionForOrLogic","ontimeout","orQuerySuccess","OrInfo","OnSucess","executeOrLogic","OrQuery","Or","TmpQry","Limit","BaseCount","ResultCount","CountRequest","createTransaction","updateValue","suppliedValue","storedValue","BaseUpdate","InQuery","WhereQry","checkSchema","AllowedProp","executeCheck","BaseDelete","WorkerStatus","CodeExecutionHelper","pushApi","usePromise","FirstRequest","Registered","executeCodeUsingWorker","onWorkerFailed","Failed","createWorker","Worker","ScriptUrl","getScriptUrl","onmessage","onMessageFromWorker","data","fileName","FileName","Scripts","document","getElementsByTagName","url","src","substring","Link","createElement","href","download","click","OnSuccessCallBack","then","catch","terminate"],"mappings":"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"} \ No newline at end of file